Python 排除特定大小的文件
我正在尝试生成一个.csv文件,该文件列出子目录中的所有.txt文件,但可以排除一定大小的.txt文件 如果没有关于文件大小的if语句,我可以成功生成.csv文件列表,该列表包含.txt文件的完整路径(总共1105个文件) 当我包括if os.stat行时,我得到错误: FileNotFoundError:[WinError 2]系统找不到指定的文件:“INT\u NR\u H1000Cu\u 000.mtn\u 001.txt”Python 排除特定大小的文件,python,Python,我正在尝试生成一个.csv文件,该文件列出子目录中的所有.txt文件,但可以排除一定大小的.txt文件 如果没有关于文件大小的if语句,我可以成功生成.csv文件列表,该列表包含.txt文件的完整路径(总共1105个文件) 当我包括if os.stat行时,我得到错误: FileNotFoundError:[WinError 2]系统找不到指定的文件:“INT\u NR\u H1000Cu\u 000.mtn\u 001.txt” 该特定的.txt文件是工作代码的csv文件中列出的第一个文件。您
该特定的.txt文件是工作代码的csv文件中列出的第一个文件。您需要将完整路径传递到
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
我认为您必须在
if
语句中包含完整路径。os.path找不到文件名
将完整路径添加到文件
os.path.join(路径,文件名)
同时删除TEXT\u FILE\u路径末尾的斜杠
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))
filename
只是文件名,您需要将完整路径传递到os.stat
。谢谢。我替换了代码,在if os.path文件中使用了“f”,并将其放在.write命令之前,看起来它现在正在工作;如所希望的,下载到553个文件。
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))