我编写了一个使用正则表达式搜索文件的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
如何编辑上面的内容以顺序打开当前目录中的所有文件,进行搜索,写入相同的输出文件,然后打开下一个文件并重复?我希望每个文件的输出显示在一个新行上。
非常感谢
答案 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)
,如果你不介意最后的尾随换行符。