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

She*_*hep 5 python file-io argparse

我想使用argparse从读取或者 stdin 输入文件。换句话说:

  • 如果给出了输入文件,请阅读该文件。
  • 如果不是,则当它不是终端时才从 stdin 读取。(即正在通过管道输入文件)
  • 如果这些条件都不满足,则向 argparse 发出信号,表明输入不正确。

我要求的行为类似于此问题中描述的行为,但我想argparse将没有文件识别为失败的输入。

Sam*_*Tan 1

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

希望有帮助。