与导入一起使用时执行文件 运行 文件两次
Execfile running the file twice when used with import
我想在我的 GUI 中有一个文本框和一个按钮,在单击按钮时,它应该获取文本并将其存储在某个其他文件的变量中,运行 另一个文件。
我希望用户输入访问令牌,GUI 应将其保存在 utilities.py 的全局变量 access_token 中
但是当仅导入用于设置访问令牌的功能时,文件 运行s 在单击按钮之前我不想要。
因此,实际上文件是 运行ning 两次。
这是我的gui.py
from Tkinter import *
import Tkinter as tk
from utilities import setAccessToken
root = tk.Tk()
def callback():
setAccessToken(E1.get())
execfile('utilities.py')
E1 = Entry(root,bd = 5, width = 10)
E1.pack()
#similarly other GUI stuff with command = callback()
mainloop()
这是我的utilities.py
access_token = ""
def setAccessToken(token):
global access_token
access_token = token
print 'Running Utilities : access_token =', access_token
我的预期输出是:
Running Utilities: access_token = my access token
但是我得到了两次输出,即:
Running Utilities: access_token =
Running Utilities: access_token = my access token
有什么方法可以在导入文件时从 运行ning 中停止文件 utilities.py?
当您导入一个python文件时,其中的所有代码都会被执行。这就是 python 的工作原理。为了防止执行不需要的代码,我们应该始终像这样使用 __name__
:
access_token = ""
def setAccessToken(token):
global access_token
access_token = token
if __name__ == '__main__':
print 'Running Utilities : access_token =', access_token
我想在我的 GUI 中有一个文本框和一个按钮,在单击按钮时,它应该获取文本并将其存储在某个其他文件的变量中,运行 另一个文件。
我希望用户输入访问令牌,GUI 应将其保存在 utilities.py 的全局变量 access_token 中 但是当仅导入用于设置访问令牌的功能时,文件 运行s 在单击按钮之前我不想要。 因此,实际上文件是 运行ning 两次。
这是我的gui.py
from Tkinter import *
import Tkinter as tk
from utilities import setAccessToken
root = tk.Tk()
def callback():
setAccessToken(E1.get())
execfile('utilities.py')
E1 = Entry(root,bd = 5, width = 10)
E1.pack()
#similarly other GUI stuff with command = callback()
mainloop()
这是我的utilities.py
access_token = ""
def setAccessToken(token):
global access_token
access_token = token
print 'Running Utilities : access_token =', access_token
我的预期输出是:
Running Utilities: access_token = my access token
但是我得到了两次输出,即:
Running Utilities: access_token =
Running Utilities: access_token = my access token
有什么方法可以在导入文件时从 运行ning 中停止文件 utilities.py?
当您导入一个python文件时,其中的所有代码都会被执行。这就是 python 的工作原理。为了防止执行不需要的代码,我们应该始终像这样使用 __name__
:
access_token = ""
def setAccessToken(token):
global access_token
access_token = token
if __name__ == '__main__':
print 'Running Utilities : access_token =', access_token