Удаление файлов по типу в Python в Windows - PullRequest
7 голосов
/ 13 июня 2009

Я знаю, как удалять отдельные файлы, однако я потерял свою реализацию того, как удалить все файлы в каталоге одного типа.

Скажите, что каталог \ myfolder

Я хочу удалить все файлы, которые являются файлами .config, но ничего другим. Как бы я это сделал?

Спасибо, пожалуйста

Ответы [ 3 ]

16 голосов
/ 13 июня 2009

Используйте модуль glob:

import os
from glob import glob

for f in glob ('myfolder/*.config'):
   os.unlink (f)
5 голосов
/ 13 июня 2009

Я бы сделал что-то вроде следующего:

import os
files = os.listdir("myfolder")
for f in files:
  if not os.path.isdir(f) and ".config" in f:
    os.remove(f)

В нем перечислены файлы в каталоге, и если это не каталог, а в имени файла есть «.config», удалите его. Вам нужно будет либо находиться в том же каталоге, что и myfolder, либо указать полный путь к каталогу. Если вам нужно сделать это рекурсивно, я бы использовал функцию os.walk .

1 голос
/ 13 июня 2009

Вот, пожалуйста,

import os

# Return all files in dir, and all its subdirectories, ending in pattern
def gen_files(dir, pattern):
   for dirname, subdirs, files in os.walk(dir):
      for f in files:
         if f.endswith(pattern):
            yield os.path.join(dirname, f)


# Remove all files in the current dir matching *.config
for f in gen_files('.', '.config'):
   os.remove(f)

Обратите внимание, что gen_files может быть легко переписан для принятия кортежа шаблонов, поскольку str.endswith принимает кортеж

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...