gpt4 book ai didi

Python - 如何使用标准输入/标准输出在命令行上解析 argv?

转载 作者:行者123 更新时间:2023-11-28 20:18:24 28 4
gpt4 key购买 nike

我是编程新手。我为此查看了教程,但我越来越困惑。但我想做的是使用 stdin 和 stdout 接收数据,通过参数传递它并打印输出结果。

基本上,在命令行上,用户将输入 和一个参数。

参数是:

i = sys.argv [1]

f = sys.argv [2]

w = sys.argv [3]

然后使用 if/else 程序将根据上面选择的参数执行一些操作。

即:在命令行上,用户将输入脚本名称和f(对于sys.argv[2:2])

$ test.py f

.

if sys.argv == i:
#execute some stuff

elif sys.argv == f:
#execute some stuff

else:
sys.argv == w
#execute some stuff

使用 stdin/stdout 如何创建此开关,程序根据选择的 argv 执行一段代码?任何输入将不胜感激。

最佳答案

看起来您对 sys.argv 有点困惑.它是您在启动程序时提供给程序的参数列表。所以如果你执行 python program.py f它将是["program.py", "f"] .如果您将其执行为 python program.py f w i它将是["program.py", "f", "w", "i"] .所以你展示的代码:

i = sys.argv[1]
f = sys.argv[2]
w = sys.argv[3]

如果调用少于3个参数的程序会抛出异常。

有一些库可以帮助您解析参数,例如 argparseclick .但对于简单的情况,仅使用 sys.argv 可能更容易。

您似乎希望程序以三种模式运行:i、f 和 w。

if len(sys.argv) > 2:
print("Please only call me with one parameter")
sys.exit()

if sys.argv[1] == "f":
#do some stuff
elif sys.argv[1] == "i":
#do some other stuff
elif sys.argv[1] == "w":
#do some more other stuff
else:
print("Only accepted arguments are f, i and w")
sys.exit()

您可以通过 print 写入标准输出或 sys.stdout.write()第一个将为您输入的每个字符串添加一个换行符。

如果你想让用户交互输入一些东西,你应该使用input() (python2 中的 raw_input()input() 将该语句评估为您几乎总是不想要的 python 代码)。

如果你想用大量数据做一些事情,你最好传递一个路径到你的程序然后读入一个文件。你也可以通过sys.stdin.read()使用标准输入。但是你想通过管道传递一些东西 some-other-program | python program.py f或读取文件 python program.py f < file.txt . (理论上你也可以使用 stdin 来读取交互式数据,但不要这样做,而是使用输入。)

关于Python - 如何使用标准输入/标准输出在命令行上解析 argv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36675515/

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