【问题标题】:Get path of all .txt files in a folder and subfolders获取文件夹和子文件夹中所有 .txt 文件的路径
【发布时间】:2023-03-31 15:35:01
【问题描述】:

我必须从具有特定扩展名的文件夹中获取所有文件的路径,比如说 .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')

【问题讨论】:

标签: python


【解决方案1】:

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

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。可能有更好的方法,但这就是我想到的。

【讨论】:

  • 完美运行!非常感谢!
【解决方案2】:

您可以使用 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))

【讨论】:

  • 完美运行!非常感谢!
【解决方案3】:

这会将所有.txt 文件写入具有完整路径的file_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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多