首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python删除目录中的所有文件

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

Stack Overflow用户
提问于 2010-01-03 23:58:20
回答 7查看 262.6K关注 0票数 159

我想删除目录中所有扩展名为.bak的文件。我如何在Python中做到这一点?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-01-04 00:02:54

通过os.listdiros.remove

代码语言:javascript
复制
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))

仅使用单个循环:

代码语言:javascript
复制
for f in os.listdir(mydir):
    if not f.endswith(".bak"):
        continue
    os.remove(os.path.join(mydir, f))

或通过glob.glob

代码语言:javascript
复制
import glob, os, os.path

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

确保位于正确的目录中,最终使用os.chdir

票数 299
EN

Stack Overflow用户

发布于 2010-01-04 00:06:33

使用os.chdir更改目录。使用glob.glob生成以“.bak”结尾的文件名列表。列表的元素只是字符串。

然后,您可以使用os.unlink删除这些文件。(PS。os.unlinkos.remove是同一函数的同义词。)

代码语言:javascript
复制
#!/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)
票数 26
EN

Stack Overflow用户

发布于 2016-06-23 22:21:45

在Python3.5中,如果需要检查文件属性或类型,os.scandir会更好-有关函数返回的对象的属性,请参见os.DirEntry

代码语言:javascript
复制
import os 

for file in os.scandir(path):
    if file.name.endswith(".bak"):
        os.unlink(file.path)

这也不需要更改目录,因为每个DirEntry都已经包含了文件的完整路径。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1995373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档