我對來自C/C++的python相當陌生,我想知道如何讓我的'main.py'重新調整/使用從bash shell給出的輸入:Python命令行'文件輸入流'
蟒蛇main.py <的text.txt
(該文件是在純文本)
我對來自C/C++的python相當陌生,我想知道如何讓我的'main.py'重新調整/使用從bash shell給出的輸入:Python命令行'文件輸入流'
蟒蛇main.py <的text.txt
(該文件是在純文本)
我會用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')
它接受bufsize
和mode
ARGS更換(見http://docs.python.org/dev/library/argparse.html#type)
編輯:我的錯。這將不是支持你的用例。這將允許您提供文件路徑,但不會將文件內容傳送到進程中。我會在這裏留下這個答案,因爲它可能是有用的替代方案。
讀自sys.stdin
:
import sys
sys.stdin.read()
作爲一個file-like object,則可以使用其閱讀功能或簡單地遍歷輸入線:
for line in sys.stdin:
print line
使用fileinput
模塊在這裏最合適,而且更靈活。
http://docs.python.org/library/fileinput.html
import fileinput
for line in fileinput.input():
process(line)
除了支持標準輸入,也可以從列出的參數文件中讀取。
+1。我沒聽說過。尼斯。 –
@walter使用'line = line.rstrip()'。 – Keith