线程函数后文件路径未保存

File path is not saving after Threading function

我正在使用线程搜索文件:

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