Python 如何迭代命令行上传递的所有文件行?
我通常在Perl中这样做: 随便什么.plPython 如何迭代命令行上传递的所有文件行?,python,stdin,Python,Stdin,我通常在Perl中这样做: 随便什么.pl while(<>) { #do whatever; } while(){ #做任何事; } 然后cat foo.txt | whatever.pl 现在,我想用Python来做这件事。我尝试了sys.stdin,但我不知道如何使用Perl。如何读取输入?尝试以下操作: import fileinput for line in fileinput.input(): process(line) 大概是这样的: import
while(<>) {
#do whatever;
}
while(){
#做任何事;
}
然后cat foo.txt | whatever.pl
现在,我想用Python来做这件事。我尝试了sys.stdin
,但我不知道如何使用Perl。如何读取输入?尝试以下操作:
import fileinput
for line in fileinput.input():
process(line)
大概是这样的:
import sys
for line in sys.stdin:
# whatever
我讨厌打一匹死马,但我可以建议使用纯函数吗
import sys
def main(stdin):
for line in stdin:
print("You said: " + line.strip())
if __name__ == "__main__":
main(sys.stdin)
这种方法很好,因为main完全依赖于它的输入,您可以使用任何符合行分隔输入流范式的东西对它进行单元测试 +1这种方式比“for line in sys.stdin”更灵活,因为它将用于作为cmd行参数传递的文件名。-1:main返回None——不完全清楚应该返回给操作系统的值。我通常是这样做的,但它只在stdin上迭代,而OP希望迭代命令行上命名的所有文件。对于这种用例,fileinput是一种方法。
import sys
for line in sys.stdin:
# do stuff w/line
import sys
def main(stdin):
for line in stdin:
print("You said: " + line.strip())
if __name__ == "__main__":
main(sys.stdin)