【发布时间】:2011-06-20 17:57:46
【问题描述】:
我对来自 C/C++ 的 python 相当陌生,我想知道如何让我的“main.py”重新整理/使用从 bash shell 给出的输入:
python main.py
(文件为纯文本格式)
【问题讨论】:
标签: python file file-io filestream
我对来自 C/C++ 的 python 相当陌生,我想知道如何让我的“main.py”重新整理/使用从 bash shell 给出的输入:
python main.py
(文件为纯文本格式)
【问题讨论】:
标签: python file file-io filestream
读自sys.stdin:
import sys
sys.stdin.read()
作为file-like object,您可以使用它的读取功能或简单地遍历输入行:
for line in sys.stdin:
print line
【讨论】:
line = line.rstrip().
在这里使用fileinput 模块最合适,而且更灵活。
http://docs.python.org/library/fileinput.html
import fileinput
for line in fileinput.input():
process(line)
除了支持标准输入,它还可以从作为参数列出的文件中读取。
【讨论】:
我会使用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)
编辑:我的错误。这将不支持您的用例。这将允许您提供文件路径,但不能将文件内容通过管道传输到进程中。我将把这个答案留在这里,因为它可能是有用的替代方案。
【讨论】: