Python与Perl';s while(<;){…}?

Python与Perl';s while(<;){…}?,python,stdin,Python,Stdin,我写了很多小脚本,逐行处理文件。在Perl中,我使用 while (<>) { do stuff; } 看起来不太优雅。是否有一种Python习惯用法可以轻松处理文件/stdin输入?标准库中的文件输入模块正是您想要的: import fileinput for line in fileinput.input(): ... 这将迭代sys.argv[1:]中列出的所有文件的行,如果列表为空,则默认为sys.stdin。默认为stdin,因此会使其更加简洁 但是,如果你做

我写了很多小脚本,逐行处理文件。在Perl中,我使用

while (<>) {
    do stuff;
}

看起来不太优雅。是否有一种Python习惯用法可以轻松处理文件/stdin输入?

标准库中的文件输入模块正是您想要的:

import fileinput

for line in fileinput.input(): ...
这将迭代sys.argv[1:]中列出的所有文件的行,如果列表为空,则默认为sys.stdin。

默认为stdin,因此会使其更加简洁


但是,如果你做了很多命令行的工作,这就很好了。

从“可读代码”的角度来看,我更喜欢你的Python代码,因为大多数不使用Perl的人都不知道Perl代码的含义。你至少可以省略.readlines()Duplicate:不懂法语的人都很难读法语。啊,是的,但是对于懂英语的人来说,python在某种程度上是可读的:)的确如此。非常感谢。对不起,我错过了另一个关于同样问题的问题。用这个很难找到…那条蟒蛇的食谱非常整洁!谢谢我将这些参数用于其他目的,是否可以禁用该行为?@user1552512是,请参阅:
若要指定文件名的替代列表,请将其作为第一个参数传递给input()。还允许使用单个文件名。
import fileinput

for line in fileinput.input(): ...
import fileinput
for line in fileinput.input():
    process(line)