【问题标题】:Python command line 'file input stream'Python命令行'文件输入流'
【发布时间】:2011-06-20 17:57:46
【问题描述】:

我对来自 C/C++ 的 python 相当陌生,我想知道如何让我的“main.py”重新整理/使用从 bash shell 给出的输入:

python main.py

(文件为纯文本格式)

【问题讨论】:

    标签: python file file-io filestream


    【解决方案1】:

    读自sys.stdin

    import sys
    sys.stdin.read()
    

    作为file-like object,您可以使用它的读取功能或简单地遍历输入行:

    for line in sys.stdin:
        print line
    

    【讨论】:

    • @walter 使用 line = line.rstrip().
    【解决方案2】:

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

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

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

    除了支持标准输入,它还可以从作为参数列出的文件中读取。

    【讨论】:

      【解决方案3】:

      我会使用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

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

      【讨论】:

        猜你喜欢
        • 2014-04-20
        • 1970-01-01
        • 2013-01-31
        • 1970-01-01
        • 2013-04-17
        • 2014-05-15
        • 2016-01-17
        • 2012-02-18
        • 1970-01-01
        相关资源
        最近更新 更多