正在try 删除给定目录中除一个文件之外的所有文件.我查看了其他相关帖子,但我的问题似乎特定于从os.listdir获取名称,以及需要带有扩展名的完整路径才能使用os.Remove:

# delete files from the save path but preserve the zip file
if os.path.isfile(zip_path):
    for clean_up in os.listdir(data_path):
        if not clean_up.endswith(tStamp+'.zip'):
            os.remove(clean_up)

出现此错误:

Line 5:     os.remove(clean_up)

    FileNotFoundError: [WinError 2] The system cannot find the file specified: 'firstFileInListName'

我认为这是因为os.listdir没有捕获每个文件的文件扩展名(打印的os.listdir(Data_Path),并且只获得了没有扩展名的文件的名称)

除了以tStamp+‘.zip’结尾的文件外,我可以做些什么来删除data_path中的所有文件?

推荐答案

您遇到的问题并不是因为os.listdir没有捕获文件扩展名;而是因为os.listdir只返回文件的名称(及其扩展名),而不是它们的完整路径.当您try 使用os.remove(clean_up)删除文件时,Python会在当前工作目录中而不是data_path中查找该文件.这就是为什么你会得到FileNotFoundError分.

要解决此问题,在try 删除每个文件之前,您需要将data_pathclean_up联接以创建每个文件的完整路径.您可以使用os.path.join(data_path, clean_up)来完成此操作.以下是修改代码的方法:

import os

# Assuming zip_path and data_path are defined
# Example:
# data_path = 'path/to/your/data'
# tStamp = 'your_timestamp'
# zip_path = os.path.join(data_path, f'{tStamp}.zip')

if os.path.isfile(zip_path):
    for clean_up in os.listdir(data_path):
        full_path = os.path.join(data_path, clean_up)  # Create the full path
        if not full_path.endswith(tStamp + '.zip'):
            os.remove(full_path)  # Use the full path here

此修改确保使用每个文件的正确完整路径调用os.remove,从而允许您的脚本按预期删除文件.

Python相关问答推荐

Mistral模型为不同的输入文本生成相同的嵌入

如何过滤包含2个指定子字符串的收件箱列名?

如何在python polars中停止otherate(),当使用when()表达式时?

运输问题分支定界法&

我对我应该做什么以及我如何做感到困惑'

如何合并两个列表,并获得每个索引值最高的列表名称?

如何在海上配对图中使某些标记周围的黑色边框

在二维NumPy数组中,如何 Select 内部数组的第一个和第二个元素?这可以通过索引来实现吗?

Polars map_使用多处理对UDF进行批处理

Python Mercury离线安装

如何使用Azure Function将xlsb转换为xlsx?

如何在PythonPandas 中对同一个浮动列进行逐行划分?

我可以不带视频系统的pygame,只用于游戏手柄输入吗?''

Polars表达式无法访问中间列创建表达式

如何在PYTHON中向单元测试S Side_Effect发送额外参数?

Pandas 删除只有一种类型的值的行,重复或不重复

大Pandas 中的群体交叉融合

利用广播使减法更有效率

Pandas ,快速从词典栏中提取信息到新栏

对列中的数字进行迭代,得到n次重复开始的第一个行号