【问题标题】:Passing variable name as command line arguments in python在python中将变量名作为命令行参数传递
【发布时间】:2021-11-21 22:53:31
【问题描述】:

我希望用户在命令行本身中使用带有变量名的命令行输入参数。

例如,

python test.py a=10 b=20

代码应该能够在需要的地方使用 a=10 和 b=10。

我能够实现 python test.py 10 20 但不是上面给出的东西。我想知道这在python中是否可能?

【问题讨论】:

  • 这能回答你的问题吗? Reading named command arguments
  • 听起来你问的是“如果我在命令行上指定a=10,有没有办法可以在脚本中引用变量a,其值为10 " ?

标签: python command-line-arguments sys


【解决方案1】:

你可以做这样的事情(非常hacky):

import sys

def assign_variable_dynamically(expression):
    var_name, value = expression.split("=")
    globals()[var_name] = value

# for the following run: python test.py a=10 b=20
# you will get:
assign_variable_dynamically(sys.argv[1]) 
assign_variable_dynamically(sys.argv[2])
print(a)  # output: 10
print(b)  # output: 20

【讨论】:

  • @A.Gehani 请注意上述解决方案适用于var_name=value_name形式的表达式
【解决方案2】:

您不能直接从命令行分配变量,但来自sys 模块的sys.argv 将返回所有命令行参数的列表。所以你可以传递这些值,然后像这样在程序的第一行中分配它们。

import sys
# expect program to be run with "python test.py 10 20"
file_name = sys.argv[0] # this will be "test.py" in our example
a = sys.argv[1] # this will be 10
b = sys.argv[2] # this will be 20

查看这篇文章以获取有关此主题的更多详细信息。 https://www.geeksforgeeks.org/how-to-use-sys-argv-in-python/

【讨论】:

    【解决方案3】:

    您可以使用sysgetopt 来执行此操作,其方式与在 C 中检查命令行参数的方式类似。您可以通过阅读文档here

    【讨论】:

      猜你喜欢
      • 2020-08-01
      • 2021-01-03
      • 2020-08-19
      • 2016-05-31
      • 1970-01-01
      • 2021-01-01
      • 2013-02-02
      • 2018-05-25
      • 1970-01-01
      相关资源
      最近更新 更多