Python:如何确保程序只从 sys.stdin 获取文件数据?

Python: How to ensure a program ONLY takes file data from sys.stdin?

我想将名为 simdata.txt 的文件中的数据用于 运行 我在 Python 中编写的模拟。我想确保当用户从命令行执行我的程序时,数据仅通过 sys.stdin 流提供。

也就是说,我希望我的程序是这样的运行:

python3 simulation.py < simdata.txt

与此相反(通过 sys.argv 而不是 sys.stdin):

python3 simulation.py simdata.txt

如何确保用户总是以第一种方式而不是第二种方式执行程序?通常我使用这个来执行这个规则:

if len(sys.argv) > 2:
    print("This is not how you use the program. Example of use:")
    print("python3 simulation.py < simdata.txt")
    exit(1)

但这似乎有问题,因为我可能想在我的程序中添加额外的标志来改变模拟的行为。也就是说,也许我想这样做:

python3 simulation.py < simdata.txt --plot_data

是否有更好的方法来确保 simdata.txt 仅通过标准输入输入而不影响我添加额外程序标志的能力?

事实证明,使用 argparse 模块是更好的答案。这样我就不用对输入有那么严格的要求了。