簡體   English   中英

全局變量稍后使用,python表示未定義

[英]Global variable is used later and python said it's not defined

我正在使用chromedriver進行一些自動化。 我正在從我們公司基於Web的系統中獲取價值。

這是我的代碼的一部分:

def ask_user():
global choice
while True:
    try:
        choice = int(input('Milyen tesztet csinálsz? \n (1) Bejövő WR Teszt \n (2) Kimenő WR teszt \n'))
    except ValueError:
        print('Kérlek számot üss be!')
        continue
    if 0 < choice < 3:
        break
    else:
        print('Ez nem 1 és 2 között van! Próbáld újra:')

def decider():
    global path_dir
    if warr_type == warranty:
        with open('partners.json', encoding = 'utf-8') as partner_data:
            partner_db = json.load(partner_data)
    for p in partner_db.keys():
        if p == partner:
            path_dir = partner_db.get(p)           
    else:
        with open('data.json') as data_file:
            data = json.load(data_file)
    for k in data.keys():
        if k == restring.group(1):
            path_dir = data.get(k)


def check_and_copy(): # checking for directory existence and copy based upon user choice+ decider()
    if choice == 1:
        incoming()
    else:
        outgoing()
    if not os.path.exists(path_dir):
        os.makedirs(path_dir)
        name_list = os.path.splitext(name)
        shutil.copy2('C:\DIST\WR_4.5\oHistory1.log', path_dir+name_list[0]+'-'+timestr+name_list[1])
        print ('Log átmásolva')
    else:
        # os.chdir(target_dir) felesleges sor
        name_list = os.path.splitext(name)
        shutil.copy2('C:\DIST\WR_4.5\oHistory1.log', path_dir+name_list[0]+'-'+timestr+name_list[1])
        print('Log átmásolva')

我得到的錯誤是:

  File "C:/GSM/GSM_wr_AUTO_1.7.1(exp).py", line 120, in check_and_copy
if not os.path.exists(path_dir):
NameError: name 'path_dir' is not defined

我清楚地聲明了一個全局變量,怎么會出現此錯誤?

請幫我。 另外,如果需要完整的代碼,請告訴我。

返回值在decider()的末尾

def decider():
    path_dir = ""
    if warr_type == warranty:
        with open('partners.json', encoding = 'utf-8') as partner_data:
            partner_db = json.load(partner_data)
        for p in partner_db.keys():
            if p == partner:
                path_dir = partner_db.get(p)          
    else:
        with open('data.json') as data_file:
            data = json.load(data_file)
        for k in data.keys():
            if k == restring.group(1):
                path_dir = data.get(k)
   return path_dir

然后在check_and_copy()傳遞該值

def check_and_copy(path_dir): # checking for directory existence and copy based upon user choice+ decider()
    if choice == 1:
        incoming()
    else:
        outgoing()
    if not os.path.exists(path_dir):
        os.makedirs(path_dir)
        name_list = os.path.splitext(name)
        shutil.copy2('C:\DIST\WR_4.5\oHistory1.log', path_dir+name_list[0]+'-'+timestr+name_list[1])
        print ('Log átmásolva')
    else:
        # os.chdir(target_dir) felesleges sor
        name_list = os.path.splitext(name)
        shutil.copy2('C:\DIST\WR_4.5\oHistory1.log', path_dir+name_list[0]+'-'+timestr+name_list[1])
        print('Log átmásolva')

然后,您可以像這樣通過它:

...
            path_dir = decider()
            ask_user()
            check_and_copy(path_dir)
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM