如何使用模式从不同的目录中读取不同的文件

时间:2018-06-05 07:26:55

标签: python file awk directory readline

我有目录结构:

LinearLayout

所有目录都有不同的名称,但FILE具有相同的名称。 每个文件都有三行。 我的问题是如何以最快的方式阅读这三行以及每个FILE?

我编写了搜索FILE的代码。但仍然不知道如何阅读所有这些。看看这个:

--- main_dir
------ aaa
--------subaaa
----------file
------ xxx
--------subxxx
----------file
------ 111
--------sub111
----------file

我想实现类似的目标:

import os

def list_files(dir):
    r = []
    for root, dirs, files in os.walk(dir):
        for name in files:
            r.append(os.path.join(root, name))
return r, print(r)
list_files('some_path)

3 个答案:

答案 0 :(得分:1)

要有效地找到名为1.txt的每个文件并打印它的前缀为文件名的内容将是:

find . -name '1.txt' -exec awk '{print FILENAME, $0}' {} +

如果这不是您想要的所有内容,请编辑您的问题以澄清。

答案 1 :(得分:0)

考虑使用:

import os

listOfFiles = os.listdir("the absolute path to main_dir")
for fileName in listOfFiles:
 print fileName
 # read the lines of fileName
 with open(fileName) as f:
   contentOfFile = f.readlines()

答案 2 :(得分:0)

我找到了打开FILE的解决方案,这里是代码:

import os

def list_files(dir):
    r = []
    for root, dirs, files in os.walk(dir):
        for name in files:
            r.append(os.path.join(root, name))
            with open(os.path.join(root, name)) as f:
                print(f.readlines())
    return r, print(r)


list_files('C:\gpdw-feeds')

现在我的结构有问题。 如何列出最后一个子文件夹中的ONLY文件? 例如:

---main_dir
----sub
-----file1
----sub_sub
-----file2

我想只读取file2,但我的代码会读取所有子文件中的所有文件。