排除特定大小的文件

2024-05-14 12:42:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试生成一个.csv文件,它列出子目录中的所有.txt文件,但可以排除一定大小的.txt文件。你知道吗

如果没有关于文件大小的if语句,我可以成功地生成.csv文件列表,其中包含.txt文件的完整路径(总共1105个文件)

import os
import csv
import os.path
mtn_path = "TEXT_FILE_PATH\\"
a = open(mtn_path + "output.csv", 'w+', newline='')
num_files = 0
for path, dirnames, filenames in os.walk(mtn_path):
    for filename in [f for f in filenames if f.endswith(".txt")]:
#       if os.stat(filename).st_size > 20000:
            f = os.path.join(path, filename)
            a.write(str(f) + os.linesep)
            num_files = num_files + 1
)
#
print("The total number of text files found was " + str(num_files))

当我包括if操作系统状态行,我得到错误:

FileNotFoundError:[WinError 2]系统找不到指定的文件:“INT\u NR\u H1000Cu\u 000.mtn\u 001.txt”

该特定的.txt文件是工作代码的csv文件中列出的第一个文件。你知道吗


Tags: 文件csvpathinimporttxtforif
2条回答

我认为必须在if语句中包含完整的路径。操作系统路径找不到filename

添加文件的完整路径 os.path.join(path, filename)

同时删除TEXT_FILE_PATH末尾的斜杠

import os
import csv
import os.path
mtn_path = r"TEXT_FILE_PATH"
a = open(mtn_path + "output.csv", 'w+', newline='')
num_files = 0
for path, dirnames, filenames in os.walk(mtn_path):
    for filename in [f for f in filenames if f.endswith(".txt")]:       
        if os.stat(os.path.join(path, filename)).st_size > 20000:
            f = os.path.join(path, filename)
            a.write(str(f) + os.linesep)
            num_files = num_files + 1
)
#
print("The total number of text files found was " + str(num_files))

您需要将完整路径传递给os.stat。重新排列代码:

for filename in [f for f in filenames if f.endswith(".txt")]:
    f = os.path.join(path, filename)
    if os.stat(f).st_size > 20000:
        a.write(str(f) + os.linesep)
        num_files = num_files + 1

相关问题 更多 >

    热门问题