我必须从文件夹获取所有文件的路径,具有特定的扩展名,假设.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')
答案 0 :(得分:2)
我会沿着这些方向做点什么:
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))
然后您可以根据需要处理条形码。可能有更好的方法,但这就是我想到的最重要的事情。
答案 1 :(得分:2)
您可以使用fnmatch.filter
和unix样式的globbing模式:
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))
答案 2 :(得分:0)
这会将所有.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')