使用Python中的os.walk()模块从子文件夹中提取行?

时间:2015-06-26 06:11:27

标签: python glob os.walk

我想在文件夹中打开一系列子文件夹,找到一些文本文件并打印一些文本文件行。我正在使用这个:

from glob import glob
import fileinput
with open('output.txt', 'w') as out:
    for line in fileinput.input(glob('*.')):
        if 'Subject:' in line:
            out.write(line)

这只能在一个文件夹中完美地工作,但是这也无法访问子文件夹。所以我听说过os.walk()模块。有谁知道如何使用os.walk()模块访问子文件夹并在单独的txt文件中提取和粘贴特定行?

1 个答案:

答案 0 :(得分:2)

使用os.walkgenerator expression递归获取当前目录中的所有文件路径:

from glob import glob
import fileinput
import os

with open('output.txt', 'w') as out:
    files = (os.path.join(p, f) for p, ds, fs in os.walk(os.curdir) for f in fs)
    for line in fileinput.input(files):
        if 'Subject:' in line:
            out.write(line)
上面代码中的

fs是文件名列表。您需要迭代它们以获取文件路径。

os.path.join用于通过加入父目录p和文件名f来创建路径。