gpt4 book ai didi

python - 如果 Python 中没有数据传输,如何从标准输入或文件中读取?

转载 作者:IT老高 更新时间:2023-10-28 21:06:29 26 4
gpt4 key购买 nike

我有一个 CLI 脚本并希望它从文件中读取数据。它应该能够以两种方式阅读它:

  • 猫数据.txt | ./my_script.py
  • ./my_script.py data.txt

——例如,有点像 grep

我知道的:

  • sys.argvoptparse 让我可以轻松读取任何参数和选项。
  • sys.stdin 让我读取管道输入的数据
  • fileinput 使整个过程自动化

不幸的是:

  • using fileinput 使用标准输入和任何参数作为输入。所以我不能使用不是文件名的选项,因为它试图打开它们。
  • sys.stdin.readlines() 工作正常,但如果我不通过管道传输任何数据,它会挂起,直到我输入 Ctrl + D
  • 我不知道如何实现“如果 stdin 中没有任何内容,则从 args 中的文件中读取”,因为在 bool 上下文中 stdin 始终是 True。<

如果可能的话,我想要一种便携的方式来做到这一点。

最佳答案

Argparse允许以相当简单的方式完成此操作,除非您遇到兼容性问题,否则您确实应该使用它而不是 optparse

代码会是这样的:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--input', type = argparse.FileType('r'), default = '-')

现在你有了一个解析器,它可以解析你的命令行参数,如果它看到一个文件就使用一个文件,如果没有就使用标准输入。

关于python - 如果 Python 中没有数据传输,如何从标准输入或文件中读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com