Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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 获取文件夹和子文件夹中所有.txt文件的路径_Python - Fatal编程技术网

Python 获取文件夹和子文件夹中所有.txt文件的路径

Python 获取文件夹和子文件夹中所有.txt文件的路径,python,Python,我必须从一个文件夹中获取所有文件的路径,有一个特定的扩展名,比如.txt(我认为另一个扩展名也一样),然后将它们放在一个.txt文件中。问题是,在文件夹中,有其他文件夹和其他.txt文件,我也需要它们的路径。 我写了一个代码,但它不适用于子文件夹。有人能帮忙吗 list1=[]; outputFilePath = 'C:\...\playlist.txt' with open("C:\\...\\folderPath2.txt","r") as f: output = f.read

我必须从一个文件夹中获取所有文件的路径,有一个特定的扩展名,比如.txt(我认为另一个扩展名也一样),然后将它们放在一个.txt文件中。问题是,在文件夹中,有其他文件夹和其他.txt文件,我也需要它们的路径。 我写了一个代码,但它不适用于子文件夹。有人能帮忙吗

list1=[]; 

outputFilePath = 'C:\...\playlist.txt'

with open("C:\\...\\folderPath2.txt","r") as f:
    output = f.readline()


for dir_, _, files in os.walk(output):
    for fileName in files:
                relDir = os.path.abspath(output)
                relFile = os.path.join(relDir, fileName)
                list1.append(relFile)   


with open(outputFilePath, 'r+') as file1:
         for lines in list1:
            file_name, file_extension = os.path.splitext(lines)
            if  (file_extension == '.txt'):
                file1.writelines(lines)
                file1.writelines('\n')

我会按照以下思路做一些事情:

from os import walk
from os.path import splitext
from os.path import join

foodir = r"C:\path\to\top\dir"
barlist = list()

for root, dirs, files in walk(foodir):
  for f in files:
    if splitext(f)[1].lower() == ".txt":
      barlist.append(join(root, f))

然后,您可以根据需要处理barlist。可能有更好的方法,但这正是我想出来的。

您可以使用
fnmatch.filter
和unix风格的全局模式:

import fnmatch
import os
barlist = []
for root, dirnames, filenames in os.walk('src'):
    for filename in fnmatch.filter(filenames, '*.txt'):
        barlist.append(os.path.join(root, filename))

这将把所有
.txt
文件写入具有完整路径的
文件\u list.txt
文件

import fnmatch
import os

output_file_path = 'file_list.txt'
folder_root = r'e:\myfiles' 

with open(output_file_path, 'w') as f_output:
    for root, dirnames, filenames in os.walk(folder_root):
        for filename in fnmatch.filter(filenames, '*.txt'):
            f_output.write(os.path.join(root, filename)+'\n')

您是否考虑过使用
glob
?可能的作品复制完美!谢谢!工作完美!谢谢!