2010-03-01 44 views

回答

0

「統一結構」聽起來像是你要能夠訪問無論是作爲一個參數提供的文件或sys.stdin通過一個變量,所以你可以直接告訴函數從得到一行。幸運的是,sys.stdin只是另一個文件對象,所以你有完全相同的功能有兩個,它是作爲一個嘗試簡單/ except塊:

 
try: 
    from sys import argv 
    file1 = open(argv[1]) 
except: 
    from sys import stdin 
    file1 = stdin 

你會得到sys.stdin如果ARGV [1]是超出範圍(IndexError)或無法打開(IOError)。

如果你只是想將兩者連接起來,用file1 = sys.argv[1].open().read() + sys.stdin.read()

6
import fileinput 
for line in fileinput.input(): 
    print line 
+0

'這個迭代在sys.argv中列出的所有文件的行[1:],默認爲sys.stdin如果列表是空的。如果文件名是' - ',它也被sys.stdin替換。 - http://docs.python.org/2/library/fileinput.html – n611x007 2012-12-15 21:38:14