我有一个文件夹,其中包含5个子文件夹。 每个子文件夹包含一些“ x.txt”,“ y.txt”和“ z.txt”文件,并且在每个子文件夹中重复 现在,我需要从所有子文件夹中仅读取和打印“ y.txt”文件。 我的问题是我无法读取和打印y.txt文件。你能告诉我如何解决这个问题吗?
下面是我为读取y.txt文件而编写的代码
import os, sys
import pandas as pd
file_path = ('/Users/Naga/Desktop/Python/Data')
for root, dirs, files in os.walk(file_path):
for name in files:
print(os.path.join(root, name))
pd.read_csv('TextInformation.txt',delimiter=";", names = ['Name', 'Value'])
错误:文件TextInformation.txt不存在:“ TextInformation.txt”
答案 0 :(得分:0)
您还可以尝试以下方法从子目录中提取所有y.txt
文件:
import glob
import pandas as pd
# get all y.txt files from all subdirectories
all_files = glob.glob('/Users/Naga/Desktop/Python/Data/*/y.txt')
for file in all_files:
data_from_this_file = pd.read_csv(file, sep=" ", names = ['Name', 'Value'])
# do something with the data
随后,您可以将代码应用于列表all_files
中的所有文件。 glob
的妙处在于您可以使用通配符(*
)。使用它们,您不需要子目录的名称(甚至可以在文件名中使用它,例如*y.txt
)。另请参见documentation on glob。
答案 1 :(得分:0)
您的问题是忘记添加“ y.txt”文件的父路径。我为您建议此代码,希望对您有所帮助。
import os
pth = '/Users/Naga/Desktop/Python/Data'
list_sub = os.listdir(pth)
filename = 'TextInformation.txt'
for sub in list_sub:
TextInfo = open('{}/{}/{}'.format(pth, sub, filename), 'r').read()
print(TextInfo)
答案 2 :(得分:0)
我为您提供了一些代码。您可以根据自己的喜好对其进行个性化设置,但是代码适合您。
import os
for dirPath,foldersInDir,fileName in os.walk(path_to_main_folder):
if fileName is not []:
for file in fileName:
if file.endswith('y.txt'):
loc = os.sep.join([dirPath,file])
y_txt = open(loc)
y = y_txt.read()
print(y)
但是请记住,{path_to_main}是包含子文件夹的路径。