在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的方式吗,还是我错过了库的某些部分?
你需要fileinput
标准用例是:
import fileinput
for line in fileinput.input():
process(line)
在Python 3中,argparse
可以很好地处理文件类型对象。它是一个非常强大的模块,文档中有很多例子,所以很容易快速编写你想要的代码。(神谕的!)
您也可以从这个关于使用argparse
选择性地从stdin读取的StackOverflow问题中受益。