使用Python删除目录中的所有文件
我想在一个文件夹里删除所有后缀名为 .bak
的文件。我该怎么用Python来做到这一点呢?
9 个回答
26
使用 os.chdir
来改变当前的工作目录。
接着,使用 glob.glob
来生成一个文件名列表,这些文件名的结尾是 '.bak'。这个列表里的每个元素都是字符串。
然后,你可以用 os.unlink
来删除这些文件。(顺便说一下,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)
28
在Python 3.5中,如果你需要检查文件的属性或类型,使用os.scandir
会更好。你可以查看os.DirEntry
,了解这个函数返回的对象有哪些属性。
import os
for file in os.scandir(path):
if file.name.endswith(".bak"):
os.unlink(file.path)
而且,这个方法不需要你切换目录,因为每个DirEntry
对象已经包含了文件的完整路径。
319
通过 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))
只用一个循环就可以完成:
for f in os.listdir(mydir):
if not f.endswith(".bak"):
continue
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
来切换目录。