我想将多个文件传递给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有关吗?
答案 0 :(得分:0)
read
调用本身不是行缓冲的。它读取X
KB的最大值(我认为X
在大多数系统上都是4K左右,但确切的数字在这里不重要),或者直到没有任何内容可供阅读。
管道文件时,您将立即显示完整输入。因此,第一个read
会冒出第一个X
KB。
当您在终端上键入时,第一个read
啜饮,直到没有任何东西可读;你还没输入它。第二次读取等待直到有东西要读(当你按下回车键)然后再读取X
KB。