【发布时间】:2011-07-28 19:09:08
【问题描述】:
我想删除 E: 中的所有文件。 带通配符。
E:\test\*.txt
我会问而不是测试 os.walk。 在窗户里。
【问题讨论】:
我想删除 E: 中的所有文件。 带通配符。
E:\test\*.txt
我会问而不是测试 os.walk。 在窗户里。
【问题讨论】:
您可以使用glob 模块:
import glob
import os
for fl in glob.glob("E:\\test\\*.txt"):
#Do what you want with the file
os.remove(fl)
【讨论】:
* 而不是if file.endswith(".txt"):。
另一种方法的稍微冗长的写法
import os
dir = "E:\\test"
files = os.listdir(dir)
for file in files:
if file.endswith(".txt"):
os.remove(os.path.join(dir,file))
或者
import os
[os.remove(os.path.join("E:\\test",f)) for f in os.listdir("E:\\test") if f.endswith(".txt")]
【讨论】:
map 比答案中提到的列表理解更好?
如果你想用更少的行来做,你也可以使用 popen
from subprocess import Popen
proc = Popen("del E:\test\*.txt",shell=False)
【讨论】:
#import glob,os ; [os.remove(x) for x in glob.glob("E:\test\*.txt")]
如果要删除具有多个扩展名的文件,请在元组中定义这些扩展名,如下所示
import os
def purge(dir):
files = os.listdir(dir)
ext = ('.txt', '.xml', '.json')
for file in files:
if file.endswith(ext):
print("File -> " + os.path.join(dir,file))
os.remove(os.path.join(dir,file))
【讨论】: