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

Sam*_*Sam 4 python text-processing inputstream

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

我知道你可以一次读取一行文件,但我想要一些能处理文本流的东西.

Bjö*_*lex 16

您可以直接读取数据stdin,如本答案中所述.这看起来像代码中的那样:

for line in sys.stdin:
    # do suff
Run Code Online (Sandbox Code Playgroud)

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

cat file.txt | python script.py
Run Code Online (Sandbox Code Playgroud)

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


ig0*_*774 7

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

python script.py file1.txt file2.txt file3.txt file4.txt
Run Code Online (Sandbox Code Playgroud)

并在 script.py

import fileinput
for line in fileinput.input():
    # do stuff here
Run Code Online (Sandbox Code Playgroud)

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

python script.py - < file.txt
Run Code Online (Sandbox Code Playgroud)

要么

cat file.txt | python script.py -
Run Code Online (Sandbox Code Playgroud)

在space_C0wb0y关联的问题的答案中提到了fileinput,我只想到我会说明如何利用它.