Python从命令行参数或标准输入读取

12 投票
2 回答
20922 浏览
提问于 2025-04-16 15:48

在用Python写文本相关的命令行程序时,我经常想要读取命令行中传入的所有文件,或者(或者说是二者选一)读取标准输入(就像Unix的cat命令,或者Perl的<>)。所以,我这样做:

if len(args) == 0:  # result from optparse
    input = sys.stdin
else:
    input = itertools.chain(*(open(a) for a in args))

这样做算不算是Python的标准做法,还是我漏掉了库里的某些部分呢?

2 个回答

2

在Python 3中,argparse模块可以很好地处理文件类型对象。这个模块非常强大,文档里有很多示例,所以你可以很快写出想要的代码。(真是太符合Python的风格了!)

你还可以看看这个StackOverflow上的问题,了解如何使用argparse来选择性地从标准输入读取数据。

15

你需要用到 fileinput 这个模块。

一个常见的使用场景是:

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

撰写回答