Я хочу удалить все файлы с расширением .bak
в каталоге. Как я могу сделать это в Python?
Через 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
.
можно создать функцию. Добавляйте 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")
Используйте 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)