如何迭代命令行上传递的所有文件行?

Tg.*_*Tg. 19 python stdin

我通常在Perl中这样做:

whatever.pl

while(<>) {
    #do whatever;
}
Run Code Online (Sandbox Code Playgroud)

然后 cat foo.txt | whatever.pl

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

Don*_*rve 41

试试这个:

import fileinput
for line in fileinput.input():
    process(line)
Run Code Online (Sandbox Code Playgroud)

  • +1这种方式比"for sys.stdin中的行"更灵活,因为它可以作为cmd行参数传递文件名. (2认同)

Mar*_*ddy 13

import sys
def main():
    for line in sys.stdin:
        print line
if __name__=='__main__':
    sys.exit(main())
Run Code Online (Sandbox Code Playgroud)

  • @ S.Lott:很清楚sys.exit如何处理None. (3认同)

Dav*_*d Z 6

像这样的东西:

import sys

for line in sys.stdin:
    # whatever
Run Code Online (Sandbox Code Playgroud)