2010-03-28 58 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

相關問題