为了账号安全,请及时绑定邮箱和手机立即绑定

使用argparse从stdin或输入文件中读取

使用argparse从stdin或输入文件中读取

慕容3067478 2021-03-11 14:10:08
我想使用argparse从读取或者 stdin 或输入文件。换一种说法:如果给出了输入文件,请阅读该文件。如果不是,请仅在不是终端的情况下从stdin读取。(即正在传输文件)如果这两个条件都不满足,则向argparse发出信号,指出输入不正确。我想argparse不将任何文件识别为失败的输入。
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

我只建议设置nargs='?',然后分别处理Nonetype的情况。根据官方文档,“ FileType对象了解伪参数'-',并针对可读FileType对象将其自动转换为sys.stdin,对于可写FileType对象将其自动转换为sys.stdout”。因此,如果您想要标准输入,只需给它一个破折号。


例子

import argparse

import sys

parser = argparse.ArgumentParser()

parser.add_argument('inputfile', nargs='?', type=argparse.FileType('r'))

if not inputfile:

    sys.exit("Please provide an input file, or pipe it via stdin")


查看完整回答
反对 回复 2021-03-24
?
忽然笑

TA贡献1806条经验 获得超5个赞

使用链接到问题的信息,如何sys.stdin.isatty()检查程序是否正在运行的实例是管道的一部分,如果不是,则从输入文件中读取,否则从中读取stdin。如果输入文件不存在或stdin为空,则抛出错误。



查看完整回答
反对 回复 2021-03-24
  • 2 回答
  • 0 关注
  • 249 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信