Python命令行'文件输入流'

时间:2011-06-20 17:57:47

标签: python file file-io filestream

我对来自C / C ++的python很新,我想知道如何让我的'main.py'重新配置/使用从bash shell给出的输入:

  

python main.py< text.txt

(文件是纯文本)

3 个答案:

答案 0 :(得分:8)

sys.stdin阅读:

import sys
sys.stdin.read()

作为file-like object,您可以使用其读取函数或简单地遍历输入行:

for line in sys.stdin:
    print line

答案 1 :(得分:6)

使用fileinput模块在​​这里最合适,也更灵活。

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

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

除了支持stdin之外,它还可以从列为参数的文件中读取。

答案 2 :(得分: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')bufsize args的mode(请参阅http://docs.python.org/dev/library/argparse.html#type

编辑:我的错误。这将支持您的用例。这将允许您提供文件路径,但不会将文件内容传递到进程中。我会在这里留下这个答案,因为它可能有用作为替代方案。