2011-06-20 121 views
9

我對來自C/C++的python相當陌生,我想知道如何讓我的'main.py'重新調整/使用從bash shell給出的輸入:Python命令行'文件輸入流'

蟒蛇main.py <的text.txt

(該文件是在純文本)

回答

2

我會用argparse創建一個選項解析器接受文件路徑並打開它。

import argparse 

def main(): 
    parser = argparse.ArgumentParser() 
    parser.add_argument('infile', type='open') 
    args = parser.parse_args() 

    for line in args.infile: 
     print line 

if __name__ == '__main__': 
    main() 

如果type='open'沒有提供足夠的控制,它可以與argparse.FileType('o')它接受bufsizemode ARGS更換(見http://docs.python.org/dev/library/argparse.html#type

編輯:我的錯。這將不是支持你的用例。這將允許您提供文件路徑,但不會將文件內容傳送到進程中。我會在這裏留下這個答案,因爲它可能是有用的替代方案。

8

讀自sys.stdin

import sys 
sys.stdin.read() 

作爲一個file-like object,則可以使用其閱讀功能或簡單地遍歷輸入線:

for line in sys.stdin: 
    print line 
+0

@walter使用'line = line.rstrip()'。 – Keith

6

使用fileinput模塊在這裏最合適,而且更靈活。

http://docs.python.org/library/fileinput.html

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

除了支持標準輸入,也可以從列出的參數文件中讀取。

+0

+1。我沒聽說過。尼斯。 –