繁体   English   中英

如何在python 3中将列表写入txt文件?

[英]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)

参见Python 3.7-文件读取/写入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM