Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 排除特定大小的文件_Python - Fatal编程技术网

Python 排除特定大小的文件

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文件中列出的第一个文件。您

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

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