Python命令行“文件输入流”
我刚接触Python,之前是用C/C++的。我想知道怎么让我的' main.py '能够识别并使用从bash命令行输入的内容,比如:
python main.py < text.txt
(这个文件是纯文本格式的)
3 个回答
1
我会使用 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
这两个参数(具体可以查看 这里)。
编辑:我犯了个错误。这种方法不支持你的使用场景。它可以让你提供一个文件路径,但无法将文件内容传递给进程。我把这个回答留在这里,因为它可能作为一种替代方案对你有帮助。
6
在这里,使用 fileinput
模块是最合适的选择,而且它更灵活。
http://docs.python.org/library/fileinput.html
import fileinput
for line in fileinput.input():
process(line)
除了支持标准输入(stdin),它还可以读取作为参数列出的文件。
9
从 sys.stdin
读取数据:
import sys
sys.stdin.read()
因为它是一个 类似文件的对象,你可以使用它的读取功能,或者直接逐行读取输入:
for line in sys.stdin:
print line