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

时间:2019-07-10 08:07:20

标签: 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, 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”

3 个答案:

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