删除名称满足条件的特定扩展名文件
我不确定这是不是简单的问题,但我有一个文件夹,里面有很多csv和txt文件。我需要删除所有名字结尾不是0的csv文件。有没有简单的方法可以做到这一点?
顺便说一下,这个文件夹就是我的脚本所在的文件夹,所以不需要输入文件路径。我正在使用python 3.3.3。任何建议都非常感谢!!
谢谢!!
2 个回答
2
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它存储到另一个地方。这个过程可能会涉及到很多步骤,比如读取文件、处理数据、然后再把结果写入新的文件。
在这个过程中,我们可能会遇到一些问题,比如数据格式不对、文件找不到或者权限不足等。这些问题可能会导致我们的程序出错,无法正常运行。
为了避免这些问题,我们可以在代码中加入一些检查,比如在读取文件之前先确认文件是否存在,或者在处理数据时检查数据的格式是否正确。这样可以提高程序的稳定性,让它在遇到问题时能够给出友好的提示,而不是直接崩溃。
总之,编程就像做菜,准备工作做得越充分,最后的结果就会越好。
import glob
import os
for f in glob.glob("*.csv"): # find all csv files
if not f.endswith("0.csv"):
os.remove(f) # if file name ends in 0.csv, delete it
5
和Padraic的精彩回答类似:
import os, glob
files = [file for file in glob.glob("path/to/files/*.csv") if not file.endswith("0.csv")]
for file in files:
os.remove(file)
我觉得先建立一个列表,然后再遍历这个列表来删除内容,看起来会更整洁。每个人的看法可能不同。我喜欢这样做,因为这样我可以写出类似下面的代码:
with open("path/to/files/file_removal.log","w") as f:
for file in files:
try:
os.remove(file)
except Exception as e:
f.write("! The file {} could not be removed:\n".format(file)+
"-->{}\n".format(e))
else:
f.write("The file {} was removed successfully\n".format(file))