如何在python中编写一个处理文本流的程序?

时间:2011-03-11 12:33:09

标签: python inputstream text-processing

如果这是一个重复的问题,我很抱歉。如何编写python脚本来处理数据流?我需要这样做,因为我正在处理的文件很大,我宁愿不把文件读入内存。

我知道您可以一次读取该文件的一行,但我想要一些可以处理文本流的内容。

3 个答案:

答案 0 :(得分:15)

您可以阅读stdin中的数据,如answer所述。这看起来像代码中的那样:

for line in sys.stdin:
    # do suff

如果你想处理一个文件,那么就像这样调用脚本(在Unix平台上):

cat file.txt | python script.py

你当然也可以管理任何其他程序的输出。

答案 1 :(得分:7)

您的案例听起来与the fileinput module的设计完全相同。这样你就可以做到:

python script.py file1.txt file2.txt file3.txt file4.txt

并在script.py

import fileinput
for line in fileinput.input():
    # do stuff here

使用fileinput的额外好处是你可以做大致相同的事情Space_C0wb0y建议添加短划线作为第一个参数:

python script.py - < file.txt

cat file.txt | python script.py -

fileinput在Space_C0wb0y关联的问题的答案中提到,我只是想知道如何利用它。

答案 2 :(得分:0)

f = open('somefile.txt')
for line in f:
    process(line)

实际上,f可以是可迭代的任何内容,例如,如果您想从标准输入读取,则可以是字符串列表,甚至是sys.stdin