Во-первых, позвольте мне извиниться, если название неясно.
Чтобы упростить задачу, которую я выполняю на работе, я начал писать этот сценарий, чтобы автоматизировать удаление файлов по определенному пути.
Моя проблема в том, что в текущем состоянии этот скрипт не проверяет содержимое папок в пределах папки, указанной в пути.
Я не уверен, как это исправить, потому что, насколько я могу судить, должен проверяет эти файлы?
import os
def depdelete(path):
for f in os.listdir(path):
if f.endswith('.exe'):
os.remove(os.path.join(path, f))
print('Dep Files have been deleted.')
else:
print('No Dep Files Present.')
def DepInput():
print('Hello, Welcome to DepDelete!')
print('What is the path?')
path = input()
depdelete(path)
DepInput()
используйте os.walk (путь)






Попробуйте использовать os.walk для обхода дерева каталогов, например:
def depdelete(path):
for root, _, file_list in os.walk(path):
print("In directory {}".format(root))
for file_name in file_list:
if file_name.endswith(".exe"):
os.remove(os.path.join(root, file_name))
print("Deleted {}".format(os.path.join(root, file_name)))
Вот документы (внизу есть несколько примеров использования): https://docs.python.org/3/library/os.html#os.walk
лучше использовать fnmatch.fnmatch(file_name,"*.exe"), чтобы он обрабатывал расширения .EXE / .exe в нижнем / верхнем регистре
В настоящее время ваш код просто перебирает все файлы и папки в предоставленной папке и проверяет каждый из них на предмет его имени. Чтобы также проверять содержимое папок в пути, вы должны сделать свой код рекурсивным.
Вы можете использовать os.walk, чтобы пройти по дереву каталогов по пути, а затем проверить его содержимое.
Вы найдете более подробный ответ с примерами кода на Рекурсивный поиск подпапок и возврат файлов в списке python.
Взгляните на os.walk ()
Эта функция будет перебирать подкаталоги за вас. Петля будет выглядеть так.
for subdir, dirs, files in os.walk(path):
for f in files:
if f.endswith('.exe'):
fullFile = os.path.join(subdir, f)
os.remove(fullFile)
print (fullFile + " was deleted")
Вы ищете os.walk(). В вашем случае это могло бы работать так:
import os
def dep_delete(path):
for path, dirs, files in os.walk(path):
for f in files:
if f.endswith('.exe'):
os.remove(os.path.join(path, f))
print('Dep files have been deleted.')
def dep_input():
print('Hello, Welcome to dep_delete!')
print('What is the path?')
path = input()
dep_delete(path)
dep_input()
Возможно, вам потребуется выполнить проверку, является ли указанная запись также папка; если да, повторите те же шаги. Это требует рекурсии