@ slh2080: Публикация «Решено» - это не то, что вы делаете на этом сайте. Что вы делаете, это выберите ответ, который вы на самом деле использовали, и нажмите на галочку, чтобы указать, что это решило вашу проблему.
С.Лотт
1
Сожалею. Спасибо за указание на мою ошибку. Это не домашняя работа, просто изучение Python в свободное время. Я нажал на ответ, который использовал, но это было до того, как я увидел ответ ghostdog74.
Ваш первый пример использует избыточные для циклов. Вы можете передать с - [os.remove (f) для f в os.listdir ("."), Если f.endswith (". Bak")] - в качестве списочных пониманий. Или вы можете переместить 'if' в понимании в цикл for - для f в os.listdir ("."): If f.endswith (". Bak"): os.remove (f)
dragonjujo
@ slh2080 Поскольку вы говорите, что проблема решена, почему бы не отметить ответ как правильный ответ?
blwy10
5
Остерегайтесь os.listdir (".") !!! Я использовал этот код и забыл изменить путь, весь мой код пропал !!! Пробовал две разные утилиты восстанавливать но без везения !!
Лэй Го
@LeiGuo Исправлено.
югр
26
Используйте, os.chdirчтобы изменить каталог. Используйте glob.globдля генерации списка имен файлов, заканчивающихся на «.bak». Элементы списка - это просто строки.
Затем вы можете использовать os.unlinkдля удаления файлов. (PS. os.unlinkИ os.removeявляются синонимами для той же функции.)
#!/usr/bin/env pythonimport glob
import os
directory='/path/to/dir'
os.chdir(directory)
files=glob.glob('*.bak')for filename in files:
os.unlink(filename)
Не очень хороший выбор, на мой взгляд. Это не переносимо и, вероятно, дороже из-за дополнительного подпроцесса. Лучше использовать API-интерфейсы Python.
Хакон
0
Я понимаю, что это старо; однако, здесь было бы, как сделать это, используя только модуль OS ...
def purgedir(parent):for root, dirs, files in os.walk(parent):for item in files:# Delete subordinate files
filespec = os.path.join(root, item)if filespec.endswith('.bak'):
os.unlink(filespec)for item in dirs:# Recursively perform this operation for subordinate directories
purgedir(os.path.join(root, item))
shutil.rmtree(path)
можно использовать .Ответы:
Через
os.listdir
иos.remove
:Или через
glob.glob
:Будьте уверены, чтобы быть в правильном каталоге, в конце концов, используя
os.chdir
.источник
Используйте,
os.chdir
чтобы изменить каталог. Используйтеglob.glob
для генерации списка имен файлов, заканчивающихся на «.bak». Элементы списка - это просто строки.Затем вы можете использовать
os.unlink
для удаления файлов. (PS.os.unlink
Иos.remove
являются синонимами для той же функции.)источник
В Python 3.5
os.scandir
лучше, если вам нужно проверить атрибуты или тип файла - см.os.DirEntry
свойства объекта, возвращаемого функцией.Это также не требует изменения каталогов, поскольку каждый из них
DirEntry
уже содержит полный путь к файлу.источник
if file.name.endswith(".bak"):
Вы можете создать функцию. Добавьте maxdepth, как вам нравится, для обхода подкаталогов.
источник
Сначала сгладьте их, затем отсоедините .
источник
В Linux и macOS вы можете запустить простую команду в оболочке:
источник
Я понимаю, что это старо; однако, здесь было бы, как сделать это, используя только модуль OS ...
источник