如果这是一个重复的问题,我很抱歉。如何编写python脚本来处理数据流?我需要这样做,因为我正在处理的文件很大,我宁愿不把文件读入内存。
我知道您可以一次读取该文件的一行,但我想要一些可以处理文本流的内容。
答案 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
。