Python通过stdin读取多个文件

时间:2014-02-13 18:46:02

标签: python

我想将多个文件传递给python脚本,但我不知道该怎么做。

import sys

file1 = sys.stdin.read()
file2 = sys.stdin.read()

print
print "You entered: " + file1
print
print
print "You entered: " + file2

使用输入输入执行脚本可以正常工作,例如:

python input.py
FIRST
SECOND

You entered: FIRST

You entered: SECOND

如果我将文件传递给脚本,它只会检索其中一个输入:

cat file1.txt file2.txt | python input.py

You entered: This is file 1
This is file 2

You entered:

我的第一个假设是它与EOF有关吗?

1 个答案:

答案 0 :(得分:0)

read调用本身不是行缓冲的。它读取X KB的最大值(我认为X在大多数系统上都是4K左右,但确切的数字在这里不重要),或者直到没有任何内容可供阅读。

管道文件时,您将立即显示完整输入。因此,第一个read会冒出第一个X KB。

当您在终端上键入时,第一个read啜饮,直到没有任何东西可读;你还没输入它。第二次读取等待直到有东西要读(当你按下回车键)然后再读取X KB。