Удаление всех файлов в каталоге с Python

Я хочу удалить все файлы с расширением .bak в каталоге. Как я могу сделать это в Python?

140
задан Sled 26 April 2013 в 13:08
поделиться

4 ответа

Через os.listdir и os.remove:

import os

filelist = [ f for f in os.listdir(mydir) if f.endswith(".bak") ]
for f in filelist:
    os.remove(os.path.join(mydir, f))

Или через glob.glob:

import glob, os, os.path

filelist = glob.glob(os.path.join(mydir, "*.bak"))
for f in filelist:
    os.remove(f)

Убедитесь, что вы находитесь в правильном каталоге, в конечном счете используя os.chdir.

250
ответ дан 23 November 2019 в 23:14
поделиться

можно создать функцию. Добавляйте maxdepth по своему усмотрению для обработчиков подкаталогов.

def findNremove(path,pattern,maxdepth=1):
    cpath=path.count(os.sep)
    for r,d,f in os.walk(path):
        if r.count(os.sep) - cpath <maxdepth:
            for files in f:
                if files.endswith(pattern):
                    try:
                        print "Removing %s" % (os.path.join(r,files))
                        #os.remove(os.path.join(r,files))
                    except Exception,e:
                        print e
                    else:
                        print "%s removed" % (os.path.join(r,files))

path=os.path.join("/home","dir1","dir2")
findNremove(path,".bak")
8
ответ дан 23 November 2019 в 23:14
поделиться

Используйте os.chdir для изменения каталога . Используйте glob.glob для создания списка имен файлов, которые заканчиваются на .bak. Элементы списка - это просто строки.

Тогда вы можете использовать os.unlink для удаления файлов. (PS. os.unlink и os.remove являются синонимами одной и той же функции)

#!/usr/bin/env python
import glob
import os
directory='/path/to/dir'
os.chdir(directory)
files=glob.glob('*.bak')
for filename in files:
    os.unlink(filename)
24
ответ дан 23 November 2019 в 23:14
поделиться

Сначала глобус их, затем развязать .

3
ответ дан 23 November 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: