我通常在Perl中这样做:
whatever.pl
while(<>) {
#do whatever;
}
然后cat foo.txt | whatever.pl
现在,我想在Python中执行此操作。我试过sys.stdin
,但我不知道怎么做,就像我在Perl中所做的那样。我该如何阅读输入?
答案 0 :(得分:41)
试试这个:
import fileinput
for line in fileinput.input():
process(line)
答案 1 :(得分:12)
import sys
def main():
for line in sys.stdin:
print line
if __name__=='__main__':
sys.exit(main())
答案 2 :(得分:6)
这样的事情:
import sys
for line in sys.stdin:
# whatever
答案 3 :(得分:3)
import sys
for line in sys.stdin:
# do stuff w/line
答案 4 :(得分:0)
我讨厌打败一匹死马,但我建议使用纯函数吗?
import sys
def main(stdin):
for line in stdin:
print("You said: " + line.strip())
if __name__ == "__main__":
main(sys.stdin)
这种方法很好,因为main完全依赖于其输入,并且您可以使用符合行定界输入流范式的任何方法对其进行单元测试。