Я думаю, вы должны просто вернуть полный путь к файлу для удаления, и если путь не None
, то вызвать os.remove()
.В своем коде вы проверяете, что search
существует в files
, но files
является списком, и вам нужно пройти и получить соответствующий файл, чтобы определить его текущий каталог.Затем вы можете получить полный путь, используя root
, и использовать его позже для удаления.
Демонстрация:
from os import environ
from os import walk
from os import remove
from os.path import join
def find(search, path):
for root, _, files in walk(path):
# Go through each file
for file in files:
# Check if the file matches the search
if file == search:
# return full path
return join(root, file)
# Get path if any
result = find(search="test.txt", path=join(environ["USERPROFILE"], "Downloads"))
# Only delete file if not None
if result:
remove(result)
print('Deleted', result)
Вы также можете использовать next()
, чтобы сделать find()
короче:
def find(search, path):
for root, _, files in walk(path):
return next((join(root, file) for file in files if file == search), None)
Примечание: Вы можете использовать os.path.join(os.environ['USERPROFILE'], 'Downloads')
вместо жесткого кодирования C:\\Users\The User\Downloads
.