19

我通常在 Perl 中这样做:

随便什么.pl

while(<>) {
    #do whatever;
}

然后cat foo.txt | whatever.pl

现在,我想在 Python 中做到这一点。我试过sys.stdin了,但我不知道该怎么做,就像我在 Perl 中所做的那样。如何读取输入?

4

5 回答 5

42

试试这个:

import fileinput
for line in fileinput.input():
    process(line)
于 2009-04-03T19:17:06.643 回答
13
import sys
def main():
    for line in sys.stdin:
        print line
if __name__=='__main__':
    sys.exit(main())
于 2009-04-03T19:19:50.320 回答
7

像这样的东西:

import sys

for line in sys.stdin:
    # whatever
于 2009-04-03T19:20:25.137 回答
4
import sys

for line in sys.stdin:
    # do stuff w/line
于 2009-04-03T19:20:46.247 回答
-1

我讨厌打死马,但我可以建议使用纯函数吗?

import sys

def main(stdin):
  for line in stdin:
    print("You said: " + line.strip())

if __name__ == "__main__":
  main(sys.stdin)

这种方法很好,因为 main 完全依赖于它的输入,您可以使用任何符合行分隔输入流范例的东西对其进行单元测试。

于 2018-10-16T22:52:36.577 回答