我正在尝试生成一个.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文件中列出的第一个文件。
答案 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))