排除一定大小的文件

时间:2019-05-29 20:34:04

标签: python

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

没有关于文件大小的if语句,我可以成功生成具有.txt文件完整路径的.csv文件列表(总共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 os.stat行时,出现错误:

FileNotFoundError:[WinError 2]系统找不到指定的文件:'INT_NR_H1000Cu_000.mtn_001.txt'

该.txt文件是工作代码的csv文件中列出的第一个文件。

2 个答案:

答案 0 :(得分:3)

您需要将完整路径传递到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

答案 1 :(得分:0)

我认为您必须在if语句中包含完整路径。 os.path找不到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))