我有一个Python脚本,我们称它为controller.py。我想使用controller.py运行另一个Python脚本并传递几个变量给它。我们称第二个脚本为analyzer.py。
在不将analyzer.py作为模块导入的情况下,最佳方法是什么?如何在analyzer.py中引用我传递给它的变量?
这是我使用subprocess尝试失败的代码: controller.py
在不将analyzer.py作为模块导入的情况下,最佳方法是什么?如何在analyzer.py中引用我传递给它的变量?
这是我使用subprocess尝试失败的代码: controller.py
import subprocess
var1='mytxt'
var2=100
var3=True
var4=[['x','y','z'],['x','c','d']]
var5=r"C:\\Users\\me\\file.txt"
myargs=var1,var2,var3,var4,var5
my_lst_str = ' '.join(map(str, myargs))
my_lst_str ='python analyzer.py '+my_lst_str
subprocess.call(my_lst_str,shell=True)
analyzer.py
print 'Argument List:', str(sys.argv)
我在 Stack Overflow 上查看了类似的问题。一个经常推荐的解决方案是尝试将 analyzer.py 作为模块导入,但是 analyzer.py 定义了许多不同的函数。将其作为模块使用会创建许多嵌套函数,并且管理那些嵌套函数内的变量范围很麻烦。
我需要在这些脚本中使用 Python 2。我正在使用 Windows 10 机器。
from analyzer import *
吗?因为那样会导入所有内容。如果你只想要模块中的一个函数,只需要导入那个函数,例如from analyzer import the_function
。尽量少使用全局变量(最好是零:常量可以,但最好将它们定义为枚举)。如果一个函数需要一个变量,将其作为参数传递进去。如果你一直在传递相同的参数,可以将它们分组成一个class
或者一个namedtuple
。 - undefined