穿线功能后未保存文件路径

问题描述

我正在使用Threading搜索文件

import threading
def thread(seconds):
    for root,dirs,files in os.walk('/'):
        for file in files:
            if file == 'Viber.exe':
                viber = os.path.join(root,file) 
                print(viber)
    print("Finish")
threading.Thread(target = thread,args = (1,),daemon = True).start()

然后,我需要打开该路径:

import subprocess
subprocess.check_output(viber,shell=True)

但是我遇到了错误

NameError: name 'viber' is not defined

我不知道该怎么办,以及如何解决((((请有人帮忙!

解决方法

当您在函数中声明viber变量时,python会认为该变量是局部变量,并在函数结束时将其删除。

您只需要将viber声明为全局变量,因此该函数将不会声明它自己的变量。

viber = None   # declare global variable # add this line

import threading
def thread(seconds):
    global viber    # use global variable  # add this line
    for root,dirs,files in os.walk('/'):
        for file in files:
            if file == 'Viber.exe':
                viber = os.path.join(root,file) 
                print(viber)
    print("Finish")
threading.Thread(target = thread,args = (1,),daemon = True).start()

###########

import subprocess
subprocess.check_output(viber,shell=True)  # use global variable