我希望我的代碼能夠接受來自文件和標準輸入的輸入。 做什麼構造?Python中的STDIN和Fileinput的通用構造代碼
我的意思是一個統一的結構,它意味着
file1 = sys.stdin
和
file1 = fileinput.input(sys.argv[1])
我希望我的代碼能夠接受來自文件和標準輸入的輸入。 做什麼構造?Python中的STDIN和Fileinput的通用構造代碼
我的意思是一個統一的結構,它意味着
file1 = sys.stdin
和
file1 = fileinput.input(sys.argv[1])
「統一結構」聽起來像是你要能夠訪問無論是作爲一個參數提供的文件或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()
import fileinput
for line in fileinput.input():
print line
'這個迭代在sys.argv中列出的所有文件的行[1:],默認爲sys.stdin如果列表是空的。如果文件名是' - ',它也被sys.stdin替換。 - http://docs.python.org/2/library/fileinput.html – n611x007 2012-12-15 21:38:14