使用Python删除目录中的所有文件

170 投票
9 回答
300740 浏览
提问于 2025-04-15 17:35

我想在一个文件夹里删除所有后缀名为 .bak 的文件。我该怎么用Python来做到这一点呢?

9 个回答

26

使用 os.chdir 来改变当前的工作目录。

接着,使用 glob.glob 来生成一个文件名列表,这些文件名的结尾是 '.bak'。这个列表里的每个元素都是字符串。

然后,你可以用 os.unlink 来删除这些文件。(顺便说一下,os.unlinkos.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.listdiros.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 来切换目录。

撰写回答