我不明白为什么我只能在循环中写入的日志文件中得到word和ln的第一个匹配项(有50个或更多个匹配项)。而且它的结构不像我在屏幕上打印时那样好。下面是代码。谢谢!在
我正在写的文件的结果:343438363939 70642个
regex = re.compile(r'(?:3\d){6}')
for root,dirname, files in os.walk(directory):
for file in files:
if file.endswith(".log") or file.endswith(".txt"):
f = open(os.path.join(root,file))
for i, line in enumerate(f.readlines()):
searchedstr = regex.findall(line)
ln = str(i)
for word in searchedstr:
print "\nString found: " + word
print "Line: " + ln
print "File: " + os.path.join(root,file)
print " "
logfile = open('result3.log', 'w')
logfile.write(word + '\n' + ln)
logfile.close()
f.close()
这是你的问题:
每次您像这样打开日志文件,它会删除以前在其中的所有内容 从文件的开始写入。您可以将
^{pr2}$open
更改为('a'代表'append'),或者最好打开
logfile
一次,在最外层的循环之外,如下所示:with
负责为您关闭文件,因此您不需要显式的logfile.close()
。(使用with
来打开f
会更好,如果这样的话,f.close()
不会悬挂在嵌套循环的下面。)(进一步补充:enumerate(f.readlines())
与{每次写入输出文件时都会重写输出文件,因为您是用
'w'
而不是用'a'
进行追加而打开它的。在也许你应该在循环外打开一次。在
相关问题 更多 >
编程相关推荐