全局文件变量在函数外部不可访问(Python)

全局文件变量在函数外部不可访问(Python),python,file,io,global-variables,Python,File,Io,Global Variables,当按下按钮时,变量日志打开带有时间戳的文件,当按钮关闭时,变量日志应关闭。 但是,我无法关闭在另一个函数中打开的文件,即使该文件已声明为全局文件。我尝试将“全局文件”放在这两个函数之外,但都不起作用 if button_status==True: #Press start if First_run==True: #Start a new logfile global log log=open(Fname,'a') log.writelin

当按下按钮时,变量日志打开带有时间戳的文件,当按钮关闭时,变量日志应关闭。 但是,我无法关闭在另一个函数中打开的文件,即使该文件已声明为全局文件。我尝试将“全局文件”放在这两个函数之外,但都不起作用

 if button_status==True: #Press start
    if First_run==True: #Start a new logfile
        global log
        log=open(Fname,'a')
        log.writelines(header)
        First_run=False

     #Other code here

if button_status==False:#press stop
    log.close()
    First_run=True

尝试在文件顶部附近放置类似于
log=True的内容,以便在任何方法或类之外声明它。然后去掉
全局日志
行,它应该在任何地方都可以访问。

尝试在文件顶部附近放置类似
log=True的内容,以便在任何方法或类之外声明它。然后去掉
全局日志
行,它应该在任何地方都可以访问。

global
是在函数外部引用变量时需要的

log = False
if button_status==True: #Press start
if First_run==True: #Start a new logfile
    global log
    log=open(Fname,'a')
    log.writelines(header)
    First_run=False

 #Other code here

if button_status==False:#press stop
    global log
    log.close()
    First_run=True

在函数外部引用变量时,需要使用
global

log = False
if button_status==True: #Press start
if First_run==True: #Start a new logfile
    global log
    log=open(Fname,'a')
    log.writelines(header)
    First_run=False

 #Other code here

if button_status==False:#press stop
    global log
    log.close()
    First_run=True

看起来它试图在打开之前关闭,您可以在那里尝试/除此之外绕过它,或者测试
log
的变量类型。在初始化过程中,
按钮的状态是否设置为False?是的。我们需要try/Except在Fname为全局变量的情况下,通过打开和关闭按钮来修复此问题。log=open(Fname,'a')log.close()看起来像是在试图在打开之前关闭,您可以在那里尝试/除此之外绕过它,或者测试变量类型
log
。在初始化过程中,
按钮的状态是否设置为False?是的。我们需要try/Except在Fname为全局变量的情况下,通过打开和关闭按钮来修复此问题。log=open(Fname,'a')log.close()看起来像是在试图在打开之前关闭,您可以在那里尝试/除此之外绕过它,或者测试变量类型
log
。在初始化过程中,
按钮的状态是否设置为False?是的。我们需要try/Except在Fname为全局变量的情况下,通过打开和关闭按钮来修复此问题。log=open(Fname,'a')log.close()如果
s位于函数声明中,那么这3个是
吗?在Fname为全局变量的情况下,通过在未按下按钮时打开和关闭来修复它。log=open(Fname,'a')log.close()如果
s位于函数声明中,那么这3个是
吗?在Fname为全局变量的情况下,通过在未按下按钮时打开和关闭来修复它。log=open(Fname,'a')log.close()如果
s位于函数声明中,那么这3个是
吗?在Fname为全局变量的情况下,通过在未按下按钮时打开和关闭来修复它。log=open(Fname,'a')log.close()