我使用Python2.7中可怕的exec open
,从我的主脚本(main_file.py
)中执行另外两个Python文件(file1.py
和{
我是一个新手程序员,我这样做是因为外部文件位于驱动器的其他位置。main_file.py
旁边的许多不同的Python脚本同时访问file1.py
和{
在我把一个新函数newFunction()
引入main_file.py
之前,一切都很好。newFunction()
从主脚本的另一个函数topFunction()
内部调用。在
exec open(file2.py).read()
SyntaxError: unqualified exec is not allowed in function
'topFunction()'
because it contains a nested function with free variables.
错误消息实际上指向下面的第2步:
topFunction()
第一个调用newFunction()
topFunction()
想要exec open(file2.py)
更复杂的是,newFunction()
从file1.py
访问以前执行到main_file.py
中的列表变量。而且,一旦从file1.py
执行了这些列表,file2.py
也引用了main_file.py
中的那些列表。在
所以,我找到了一些东西,至少可以让脚本运行,没有错误消息。在
exec open(file2.py).read() in globals(), locals()
这个实际上将执行file2.py
中的代码,然后继续运行剩下的在main_file.py
中运行的代码。
但问题是file2.py
将无法操纵main_file.py
中本机的变量(对象)。在
我不能让file2.py
设置myString = "pancakes"
,然后让{print myString
。在
在引入newFunction()
之前,这是可能的,当时我只使用了exec open(file2.py).read()
。在
有没有一种方法可以让类似的东西正常工作,这样外部执行的脚本也可以影响主脚本中使用的变量?在
exec open(file2.py).read() in globals(), locals()
引用docs:
所以你应该试试这个:
相关问题 更多 >
编程相关推荐