簡體   English   中英

獲取文件夾和子文件夾中所有.txt文件的路徑

[英]Get path of all .txt files in a folder and subfolders

我必須從具有特定擴展名的文件夾中獲取所有文件的路徑,比方說.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樣式的glob模式:

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文件寫入具有完整路徑的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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM