读取目录中的所有文件并输出到单个文件

时间:2016-03-31 10:17:41

标签: python regex file-io

我编写了一个使用正则表达式搜索文件的python脚本。它找到一个名称和两个数字,并将它们写入输出文件。我有一个包含许多文件的文件夹,我想为文件夹中的每个文件自动执行此过程并写入相同的输出文件。

这是我目前的尝试,仅适用于打开单个文件。

import os
import re
directory = os.listdir(os.getcwd())
for files in directory:
    f = open("VALUE_WOOLWORTHS.txt", "r")
    searchlines = f.readlines()
    for line in searchlines:
        if '"Spread" keyvalue' in line:
            n = re.search(r'\keyvalue="(.*)', line)
            name = n.group()
            break
    f.close()
    count = 0
    for i, line in enumerate(searchlines):
        if '"VALUE (Base)">' in line:
            for line in searchlines[i:i+1]:
                m = re.search(r'\d+\.\d+', line)
                count = count + 1
                if count == 1: m1 = m.group()
                    if count == 2: 
                    m2 = m.group()
                    ff = open("test.txt","a")
                    output = '{} {} {}'.format(name, m1, m2)
                    print output
                    ff.write(output)

                if count == 2: 
                break

如何编辑上面的内容以顺序打开当前目录中的所有文件,进行搜索,写入相同的输出文件,然后打开下一个文件并重复?我希望每个文件的输出显示在一个新行上。

非常感谢

1 个答案:

答案 0 :(得分:0)

假设“VALUE_WOOLWORTHS.txt”是您想要阅读的文件之一,只需将其更改为files

for files in directory:
    f = open(files, "r")

并且,对于输出文件中的换行符,请更改

output = '{} {} {}'.format(name, m1, m2)

output = '{} {} {}\n'.format(name, m1, m2)

,如果你不介意最后的尾随换行符。