[英]how to write a list into a txt file in python 3?
我想制作一个程序(Python 3.6),它可以读取多个日志文件并将这些文件中的所有行写入txt文件。
我已经尝试过的代码可以读取所有行,但是不能将所有行都写入txt文件。 我已经试过了:
allFiles = glob.glob('C:\Program Files\PostgreSQL\9.6\data\pg_log\*.log')
def readFile(allFiles):
for file in allFiles:
f = open(file,'r')
allLines = []
for line in f:
allLines.append(line)
print(line)
f.close()
with open ('readFile.txt',mode='wt', encoding='utf-8') as fileOutput:
for line in allLines:
fileOutput.write(line)
fileoutput.close()
我希望所有文件中的所有行都可以写入txt文件中,但是我得到的结果是仅以txt编写的行与该程序的执行日期具有相同的日期。
我该怎么办 ?
每次读取文件时,会将allLines重置为空列表。 将allLines = []
行移到您的for循环之外。 换句话说,函数的开始应为:
def readFile(allFiles):
allLines = []
for file in allFiles:
f = open(file,'r')
另外,还有一些“样式注释”:使用已在Python中具有含义的变量名称,即使该语言允许,通常也被认为是不好的形式。 因此,最好使用“文件”以外的东西。 同样,Python约定是在变量名中的单词之间使用下划线,而不是Camel Case。 因此,“ allLines”将是“ all_lines”。 您可能希望在以下位置查看Python样式指南: https : //www.python.org/dev/peps/pep-0008/
alllines
仅保存最后读取的文件中的行-因为您在循环内将其重置为alllines=[]
。 您需要在循环之前将其移动(或摆脱它-参见下文)。
简单地合并文件会容易得多:请参阅Python合并文本文件
您的代码有第二个/第三个问题-如果您有20个文件,每个文件具有1 GB,则将20GB ...存储在内存中...效率很低。
最好只逐行写入新文件。 此外,在使用文件objcts时,应使用with open(...) as ..:
paradigma:
def readFile(allFiles):
with open ('readFile.txt', mode='wt', encoding='utf-8') as fileOutput:
for file in allFiles:
with open(file) as reader:
for line in reader:
fileOutput.write(line)
allFiles = glob.glob('C:\Program Files\PostgreSQL\9.6\data\pg_log\*.log')
readFile(allFiles)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.