2010-03-28 34 views
1

我有很多类似于下面的Perl脚本。它所做的是它会自动打开作为命令行参数给出的任何文件,并在这种情况下打印该文件的内容。如果没有给出文件,它将从标准输入中读取。自动打开在Python中作为命令行参数给出的文件

while (<>) { 
    print $_; 
} 

有没有办法在Python中做类似的事情,而不必明确地打开每个文件?

回答

10

在Python的标准库中的fileinput模块正是为此而设计的,我引用来自我只是给了URL中的一些代码:

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

使用print代替process,你有确切相当于你的Perl代码。

+0

图书馆的参考手册现在已经是我血腥的床头阅读了几个星期了。这是非常不公平的,你有更多的Python经验。 o.O(但我很欣赏答案,但是) – msw 2010-03-28 17:02:49

+0

@msw它并不需要几年。如果你仅仅浏览了足够多的时间,就可以感受到已经存在的东西,甚至没有实际使用相关模块。当然总会有惊喜(robotparser?Yikes!)。如果有的话,我认为需要多年才会意外地做到这一点。 ;) – 2010-03-28 20:30:56

+2

@msw,我同意David的观点 - 我在1999年12月发现了Python,不到一年之后,Steve Holden已经为comp.lang.python--)上的丰富答案昵称为“martellibot”。 – 2010-03-28 21:05:18

相关问题