2017-07-01 228 views
0

这是一个简单的脚本,用于计算某些神经心理测试的Z分数。Python脚本一直在后台运行

但最近代码似乎在退出程序后仍在后台运行。这个问题在之前并不存在,我使用下面的启动部分来确保程序在高程下运行,并且显示的尺寸是正确的。

程序可以使用引发SystemExit的“退出”命令关闭,或者只需按下顶部栏上的X按钮即可关闭程序。无论如何,程序都在后台继续运行。

我哪里错了?

def progStructure(): 
    first_run = True 
    if first_run: 
     import os 
     os.system("mode con: cols=160 lines=50") 
     print(""" 
    ================================================ 
    PROGRAM GREETING 
    ================================================ 
    """) 

     mainStartup() 
     first_run = False 

    while settings("auto_run"): 
     mainStartup() 
     #this function contains the main program, but irrelevant to the question 

    print("Auto shutdown enabled, program is shutting down.") 

    wait(2) 
    exit() 
     #informs the user data has been saved then restarts 


import ctypes, sys 

def is_admin(): 
    try: 
     return ctypes.windll.shell32.IsUserAnAdmin() 
    except: 
     return False 

if is_admin(): 
    progStructure() 
else: 
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, "", None, 0) 
    progStructure() 

我写的Excel功能:

def excelWriter(excel_path, data_num, printable_list): 
    from time import strftime 
    date = strftime("%Y-%m-%d") 
    time = strftime("%H:%M:%S") 
    if settings("excel_output_subjectNames"): 
     patient_name_local = patient_name  
    else: 
     patient_name_local = "N/A" 

    demographic_data = [patient_ID, patient_name_local, patient_admin, date, time, patient_age, patient_sex, patient_edu] 

    from openpyxl import Workbook 
    from openpyxl import load_workbook 

    wb = Workbook(write_only=False) 

    try: 
     test_name_list = [ 
        "(1)MMT", "(2)MOCA", "(3)3MS", "(4)GISD", "(5)ECR", 
        "(6)Sözel Bellek Süreçleri", "(7)Rey Karmaşık Figür", "(8)İz Sürme", "(9)Stroop", 
        "(10)Wisconsin", "(11)Görsel Sözel Test", "(12)Renkli İz Sürme", 
        "(13)Wechsler", "(14)Wechsler-Sayı Dizisi", "(15)Sözel Akıcılık", 
        "(16)Semantik Akıcılık", "(17)Saat Çizme", "(18)SDOT", "(19)Ayları İleri-Geri Sayma" 
        ] 


     while True: 
      try: 
       data_workbook = load_workbook(filename = excel_path + settings("excel_name"), read_only=False) 
       active_sheet = data_workbook.get_sheet_by_name(test_name_list[data_num-1]) 
       active_sheet.append(demographic_data + printable_list) 

       data_workbook.save(filename = excel_path + settings("excel_name")) 
       break 

      except: 
       for i in range(len(test_name_list)): 
        wb.create_sheet(title = test_name_list[i]) 

       wb.save(filename = excel_path + settings("excel_name")) 
       data_workbook = load_workbook(filename = excel_path + settings("excel_name"), read_only=False) 
       active_sheet = data_workbook.get_sheet_by_name("Sheet") 
       data_workbook.remove_sheet(active_sheet) 
       data_workbook.save(filename = excel_path + settings("excel_name")) 
       continue 

    except: 
     raise 
+0

您是否收到关机消息? “程序仍在运行”的症状究竟是什么?仅仅是您看到Python可执行文件仍在进程列表中? –

+0

您没有完整的示例。另外,添加打印语句以查看它卡住的位置。 –

+0

我可以在进程列表中看到python可执行文件,是的。要么是我的exe文件被冻结,要么是python本身,如果它只是脚本。我试图删除程序后意识到这一点。 –

回答

0

忘了关闭Excel文件写入后,这看似解决了问题,谢谢大家帮忙。