如何在Python中向exec()函数传递参数

3

我已经使用pyinstaller将我的Python脚本转换为exe文件。这个exe需要调用另一个Python脚本。现在pyinstaller绑定了Python解释器,因此我们可以像下面这样调用任何其他Python脚本:

exec(open('external_script.py').read())

这将执行 external_script.py。我想使用 exec 执行 external_script.py install。因此,我还想将 install 作为参数传递。类似以下内容:

exec(open('external_script.py').read(), {'install'})

在上面的代码行中,我将install作为参数传递。但是我不确定这是否是正确的语法。请问有谁能告诉我如何在exec python中传递参数。谢谢。

我认为执行一个文件可以有不同的方法。让我检查一下,稍后告诉你。 - undefined
2个回答

3

要向 exec() 传递参数,您需要将 dict 作为全局/本地参数传递,而不是 set

exec(open('external_script.py'.read(),{'argv':'install'})

如果你将数组传递给你的 external_script.py,那么它会在 exec() 的范围内创建 argv 引用,你需要在代码中添加以下内容:

for i in argv: sys.argv.append(i)

注意:如果您使用from sys import argv来导入argv,则会覆盖您传递的值,使用['external_script.py']


1
"

os.system用于执行cmd命令

"
import os

cmd=input("type a  cmd statement here")
try:
    exec(os.system(cmd))
except Exception as e:
    print(e)

对于您来说,这将是:
exec(os.system("external_script.py install"))

1
os.system单独执行一个脚本。为什么你建议在它周围使用exec() - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接