删除名称满足条件的特定扩展名文件

1 投票
2 回答
4333 浏览
提问于 2025-04-18 12:52

我不确定这是不是简单的问题,但我有一个文件夹,里面有很多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))

撰写回答