python - 'sys.argv' 是什么意思?

标签 python cmd argv sys

我正在从代码中学习,但我对它的其中一行感到困惑:

things = [float(arg) for arg in sys.argv[1:]]
Omega_a, Omega_b, Delta_a, Delta_b, \
init_pop_a, init_pop_b, tstep, tfinal = things

我在网上搜索并试图理解sys.arg 的含义,这是我的理解:

所以sys.argv[0]是文件名,sys.argv[1:]是用户应该给的其余参数。我不确定我是否理解正确,如果是,那么我不明白为什么不能像这样:

Omega_a = input() 
Omega_b = input()
etc...

这两种给参数的方式有什么区别?

此外,如果我运行代码(按 F5),Python shell 会给我这样的错误:

Traceback (most recent call last):

File "C:\Users\testcode.py", line 55, in <module>
init_pop_a, init_pop_b, tstep, tfinal = things
ValueError: need more than 0 values to unpack

在出现错误之前,我什至没有机会提供参数 (sys.argv[1:])。所以我在网上搜索。看起来我需要在 cmd 中运行这段代码,这让我更加困惑,为什么要它以及我应该如何将它放入 cmd 中才能运行它?

最佳答案

区别在于,sys.argv(命令行)参数是在程序运行之前(启动时)给出的:

python testcode.py arg1 arg2 arg3 arg4 and so on ...

这将导致您的变量:

Omega_a = 'arg1'
Omega_b = 'arg2'
Delta_a = 'arg3'
Delta_b = 'arg4'
init_pop_a = 'and'
init_pop_b = 'so'
tstep = 'on'
tfinal = '...'

input()是在程序运行时给出的。

由于您没有使用参数启动程序,因此会出现错误, 因为没有足够的(恰好 0 个)参数可以解压到变量中。

关于python - 'sys.argv' 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9455148/

相关文章:

python - 调用设置环境变量的批处理文件的脚本

windows - 嵌套文件 : path and extension filter

windows - 批处理不识别回声

python - 如何使用 pyodbc 执行 'GRANT SELECT ON' 语句

python - Pyspark:从 pyspark 数据帧中删除 UTF 空字符

python - ModuleNotFoundError : No module named 'keras'

c - 如何从 argv 将整数传递到 pthread_create 函数? (C)

python - 使用 LabelEncorder 我试图将数据集从字符串更改为数字

Ruby:ARGV 打破重音字符

Python - 命令行参数提取为字符串 ImportError