当数据流入python时,将数据输出到文本文件中

时间:2017-10-29 07:14:15

标签: python fileoutputstream

以下代码逐行读取文件。当从输入文件读入行时,将每行输出到文本文件(output.txt)的最有效方法是什么?

fileHandle = open('file', 'r')

for line in fileHandle:
    fields = line.split('|')

    print(fields[0]) # prints the first fields value
    print(fields[1]) # prints the second fields value

fileHandle.close()

上面的代码可以在Parsing a pipe delimited file in python

中找到

3 个答案:

答案 0 :(得分:1)

一种有效的方法是使用生成器上下文管理器来处理文件。上下文管理器负责关闭文件。生成器将一次生成一行,而不是首先生成临时列表。

with open('read_file', 'r') as reader:
    with open('output_file', 'w') as writer:
        gen = (line.split('|') for line in reader)
        for row in gen:
            writer.write(row)

答案 1 :(得分:1)

这是pandas版本,我们可以用一种非常易读的方式做到这一点:

import pandas as pd
df = pd.read_csv('infile.csv', sep="|")
df.iloc[:,:2].to_csv('outfile.csv', sep="|", index=False)

这里的关键是:

df.iloc[:,:2] # selects the first two columns

创建类文件对象的示例:

import io
s = u"""A|B|C
1|2|3
4|5|6"""

file = io.StringIO(s)

import pandas as pd
df = pd.read_csv(file, sep="|")
output = df.iloc[:,:2].to_csv(sep="|", index=False)
print(output)

返回:

A|B
1|2
4|5

答案 2 :(得分:0)

我是这样做的,我在'read'上打开一个输入文件,在'write'上打开一个输出文件。我从Python教科书中得到了这个答案。它说python可以处理一次打开的多个文件。只需确保添加对print语句“file = outfile”的引用。然后当然关闭这两个文件。

infile = open(infileName,'r')
outfile = open(outfileName,'w')

for line in infile:
    fields = line.split('|')

    print(fields[0], file=outfile)
    print(fields[1], file=outfile)

infile.close()
outfile.close()