如何将外部变量传递给带有变量名的python程序?

我想用变量名将外部变量传递给我的 python 脚本。

如果我像这样通过:

program.py 'var1' 'var2' 'var3'

那么问题是:如果 var2 错误地是空格(不带引号),那么 python 脚本将 var3 作为值而不是 var2。

传递变量的预期方法是:

program.py a=var1 b=var2 c=var3

因此,如果 var2 是空格(不带引号),python 程序只会将 var2 值作为空格,不会选择 var3 而不是 var2。


明月笑刀无情
浏览 219回答 2
2回答

慕的地6264312

您是否希望接受命令行参数或使用命令行参数来填充程序中已有的变量?对于前者,使用argparse,很容易解析<opt> <arg>和<opt>=<arg>格式。但是,对于后者,您可以通过以下示例执行此操作,但这是一个安全漏洞:>>> exec('a=3')>>> a3>>> import sys>>> cli_args = sys.argv[1:]>>> exec(cli_args[0])&nbsp;>>>基本上,您可以使用exec()python 中的函数来执行类似的字符串语句'a=4',但这样做会允许在您的程序中注入代码。如果有人知道您exec()在 cli args 上使用,他们可能会将恶意代码放入将由您的程序执行的 cli 选项中。这就是为什么更推荐只解析命令行选项的原因。

ABOUTYOU

[root]# cat t.py&nbsp;import argparseparser = argparse.ArgumentParser()parser.add_argument('v1')parser.add_argument('v2')args = parser.parse_args()print ('value of variable a is:',args.v1)print ('value of variable b is:',args.v2)执行上面的脚本:[root]# python3 t.py v1='abc' v2=3value of variable v1 is: v1=abcvalue of variable v2 is: v2=3同样使用python2:[root]# python t.py v1=abc v2=3('value of variable v1 is:', 'v1=abc')('value of variable v2 is:', 'v2=3')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python