Python 命令行"文件输入流"



我对来自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'不能提供足够的控制,可以用接受bufsizemode参数的argparse.FileType('o')替换(请参阅http://docs.python.org/dev/library/argparse.html#type)

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

相关内容

  • 没有找到相关文章

最新更新