如何在python中从子目录中的多个文件中读取特定文本文件

如何在python中从子目录中的多个文件中读取特定文本文件,python,data-analysis,Python,Data Analysis,我有一个文件夹,其中包含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,

我有一个文件夹,其中包含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”


您还可以尝试以下方法从子目录中获取所有
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\u files
glob
最大的好处是你可以使用wilcards(
*
)。使用它们时,您不需要子目录的名称(您甚至可以在文件名中使用它,例如
*y.txt
)。另请参见。

您的问题是忘记添加“y.txt”文件的父路径。我为你推荐这段代码,希望对你有所帮助

导入操作系统
pth='/Users/Naga/Desktop/Python/Data'
list_sub=os.listdir(pth)
文件名='TextInformation.txt'
对于列表_sub中的sub:
TextInfo=open({}/{}/{})。格式(pth,sub,filename),'r')。read()
打印(文本信息)

我给你带了一点密码。您可以根据自己的喜好对其进行个性化设置,但代码适合您

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}是包含子文件夹的路径。

您忘记在
pd.read_csv('textformation.txt',delimiter=“;”,names=['Name',Value'])中使用新路径作为文件的路径。
它应该是:
pd.read_csv(os.path.join(root,Name),delimiter=“;”,names=['Name',Value'])
无法获取错误名称“TextInformation”defined@vnaga对不起,我弄错了。我编辑了代码,然后重试。这取决于您是否要坚持使用
pandas
的方法。如果您只想逐行读取TXT文件,您也可以考虑类似的方法。我为代码添加了一个for循环来遍历路径。您只需从pandas中使用
read_csv
,即可从文件中读取数据。但是,由于我不知道您的文件是如何构造的,因此您必须根据需要调整代码。