我想使用来自文件的数据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仅通过stdin馈送而不会影响我添加额外程序标志的能力?
事实证明,使用argparse模块是更好的选择。这样,我就不必对输入有如此严格的要求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句