我对来自C/C++的python还很陌生,我想知道如何让我的'main.py'将bash shell中给出的imput重新配置/使用为:
python main.py<text.txt
(文件为纯文本)
从sys.stdin
:读取
import sys
sys.stdin.read()
作为一个类似文件的对象,您可以使用它的读取功能,也可以简单地迭代输入行:
for line in sys.stdin:
print line
在这里使用fileinput
模块是最合适的,而且更灵活。
http://docs.python.org/library/fileinput.html
import fileinput
for line in fileinput.input():
process(line)
除了支持stdin之外,它还可以读取作为参数列出的文件。
我会使用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'
不能提供足够的控制,可以用接受bufsize
和mode
参数的argparse.FileType('o')
替换(请参阅http://docs.python.org/dev/library/argparse.html#type)
编辑:我的错误。这将不支持您的用例。这将允许您提供文件路径,但不允许将文件内容管道传输到进程中。我将把这个答案留在这里,因为它可能是一个有用的替代方案。