我想在文件夹中打开一系列子文件夹,找到一些文本文件并打印一些文本文件行。我正在使用这个:
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文件中提取和粘贴特定行?
答案 0 :(得分:2)
使用os.walk
和generator 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
来创建路径。