我是一名实习生,我正在尝试为我的公司创建一个简单的查找脚本,该脚本将获取一个SQL数据库并对其进行搜索,以使用户可读性更强。我得到了脚本,可以大致执行我想要的操作,现在我正在尝试制作一个可执行文件,办公室里的人可以试用。问题在于该脚本似乎只在使用python的计算机上按预期执行。该脚本将在每台PC上在PC上打开,但是当我向其提供SQL文件时,该脚本不会填充文本字段。
我尝试使用pyinstaller,py2exe和python build->(python file.py build)没有运气。我在这里遵循了Reedinationers的编译指南。 My python exe will not run 2 other python exe's
import re
import tkinter as tk
from tkinter.filedialog import askopenfilename
from _sqlite3 import Error
from tkinter import PhotoImage
# Link the .DB file
###########################################
def create_connection(db_file):
try:
conn = _sqlite3.connect(db_file)
return conn
except Error as e:
print(e)
return None
###########################################
try:
UserFile = open("UserFriend.txt", "w")
#Check for File if one does not exist make it
except:
UserFile = open("UserFriend.txt", "w+")
###########################################
global Error
Error = False
###########################################
def Friendly_Output(line, number, times, Error_Finder, Time_Stamp, Search_Count):
#Error_List = []
#setup = []
#print(Search_Count)
############################################################################
if "viewDidLoad() - Got a valid" in line and Error == False:
setup.append("\nFound mac address here \t\t\t\t\t| "+ Time_Stamp)
else:
pass
########################################################
if Error == False and "wifiScanTimerEvent(timer:)" in line:
#UserFile.write("\nPinged nearby wifi with NIC " + str(times) + " time(s)")
if times >= 10:
spacing = " \t| "
else:
spacing = "\t\t\t| "
setup.append("\nPinged nearby wifi with NIC " + str(times) + " time(s)" + spacing + Time_Stamp)
########################################################
if Error == False and "rssi:" in line:
strength = line[15:18]
if int(strength) >= -30:
Sname = "Excellent"
space = "\t\t\t\t\t| "
if int(strength) <= -30 and int(strength) >=-64:
Sname = "Very Good"
space = "\t\t\t\t\t| "
elif int(strength) <= -64 and int(strength) >=-70:
Sname = "Okay"
space = "\t\t\t\t\t| "
elif int(strength) <= -70 and int(strength) >=-80:
Sname = "Bad"
space = "\t\t\t\t\t| "
elif int(strength) <= -80 and int(strength) >=-90:
Sname = "Useless"
space = "\t\t\t\t\t| "
else:
pass
setup.append("\nThe signal strength is " + Sname + space + Time_Stamp)
else:
pass
if Error == False and "refrigeratorTapped()" in line:
#UserFile.write("\nTransfer to Pin Entry")
setup.append("\nTransfer to Pin Entry Screen \t\t\t\t\t| " + Time_Stamp)
else:
pass
########################################################
if Error == False and "applianceTapped() - segue_to_wifi_select_sid" in line:
#UserFile.write("\nTransfer to wifi selection page")
setup.append("\nTransfer to wifi selection page \t\t\t\t\t| " + Time_Stamp)
else:
pass
########################################################
if Error == False and "prepare(for:sender:) - segue_to_prod_wifi_setup_sid" in line:
#UserFile.write("\nTransfer to Wifi crediental entry screen")
setup.append("\nTransfer to Wifi crediental screen \t\t\t\t | " + Time_Stamp)
else:
pass
if Error == False and "addWifiNameToParamOut(wifi:)" in line:
#UserFile.write("\nAdded wifi to data send list")0
setup.append("\nAdded wifi to data send list \t\t\t\t\t| " + Time_Stamp)
else:
pass
########################################################
if Error == False and "setDevicePrivilegeCloud(macAddress:userApiKey:devicePin:privilegeCompletionHandler:) - Called with" in line:
#UserFile.write("\nSent MacAddress, apiKey, and devicePin to Cloud")
setup.append("\nSent device information to Cloud \t\t\t\t\t| " + Time_Stamp)
else:
pass
########################################################
if Error == False and r"setDevicePrivilegeCloud(macAddress:userApiKey:devicePin:privilegeCompletionHandler:) - \nDevice" in line:
#UserFile.write("\nSuccessful sending of MacAddress, apiKey, and devicePin to Cloud")
setup.append("\nSuccessful sending of MacAddress, apiKey, and devicePin to Cloud @ " + Time_Stamp)
else:
pass
########################################################
if Error == False and "onRecordButton" in line:
#UserFile.write("\nEntry applied to appliance list (Continue Button)")
setup.append("\nEntry applied to appliance list\t\t\t\t\t| " + Time_Stamp)
else:
pass
########################################################
if Error == False and "updateApplianceRecord() - upda" in line:
#UserFile.write("\nUser notified of success")
#UserFile.write("\nEnd of Setup number: " + str(number) + "\n\n")
setup.append("\n\t\t\t\t\t|\nEnd of Setup number: " + str(number)+ "\t\t\t\t\t| " + "\nUser notified of success \t\t\t\t\t| " + Time_Stamp)
#Error_List.append("\n\nEnd of Setup number: " + str(number)+ "\nUser notified of success @ " + Time_Stamp)
else:
pass
#ERROR GRABS
#######################################################################################
if "0110" in line:
#UserFile.write("\nERROR: No Bluetooth device was found")
setup.append("\nERROR: No Bluetooth device was found \t\t\t| " + Time_Stamp)
Error_List.append("\nERROR: No Bluetooth device was found \t\t\t| " + Time_Stamp)
elif "ErrorCode: loginCloudNew" in line:
setup.append("\nIncorrect Username or password attempt\t | " + Time_Stamp)
Error_List.append("\nIncorrect Username or password attempt\t | " + Time_Stamp)
elif "0120" in line:
#UserFile.write("\nERROR: No Wifi or Poor Connection")
setup.append("\nNo Wifi or Poor Connection \t\t\t\t\t| " + Time_Stamp)
Error_List.append("\nNo Wifi or Poor Connection \t\t\t\t\t| " + Time_Stamp)
elif "0130" in line:
#UserFile.write("\nERROR: User searched for appliance but none was found")
setup.append("\nSearched for appliance nothing was found| "+ Time_Stamp)
Error_List.append("\nSearched for appliance nothing found\t\t\t\t| " + Time_Stamp)
elif "300" in line:
#UserFile.write("\nERROR: Wifi List is empty. Restarting configure process.")
setup.append("\nWifi List is empty. \t\t\t\t\t| " + Time_Stamp)
Error_List.append("\nWifi List is empty. \t\t\t\t\t| " + Time_Stamp)
elif "310" in line:
#UserFile.write("\nERROR: Lost BluetoothConnection in Wifi Picker Screen. Restarting configure process.")
setup.append("\nBluetooth Connection lost on WiFi screen| " + Time_Stamp)
Error_List.append("\nBluetooth Connection lost on WiFi screen| " + Time_Stamp)
elif "1010" in line:
#UserFile.write("\nERROR: User opted to skip wifi Setup")
setup.append("\nUser opted to skip wifi Setup at\t\t\t\t\t| " + Time_Stamp)
Error_List.append("\nERROR: User opted to skip wifi Setup\t\t\t\t| " + Time_Stamp)
elif "1011" in line:
#UserFile.write("\nERROR: There was an empty text field when trying to configure wifi")
setup.append("\nUser left text field empty \t\t\t\t\t| " + Time_Stamp)
Error_List.append("\nUser left text field empty \t\t\t\t\t| " + Time_Stamp)
elif "1012" in line:
#UserFile.write("\nERROR: Bluetooth Disconnected, Reason Unknown")
setup.append("\nBluetooth Disconnected, Reason Unknown \t| " + Time_Stamp)
Error_List.append("\nBluetooth Disconnected, Reason Unknown \t| " + Time_Stamp)
elif "1013" in line:
#UserFile.write("\nERROR: The provision watchdog timer has timed out without response from NIC")
setup.append("\nUser experienced connection timeout \t\t\t\t| " + Time_Stamp)
Error_List.append("\nUser experienced connection timeout \t\t\t\t| " + Time_Stamp)
elif "1029" in line:
#UserFile.write("\nERROR: The Cloud Service reports error. Error in log")
setup.append("\nThe Cloud Service reports error.\t\t\t\t\t| " + Time_Stamp)
Error_List.append("\nThe Cloud Service reports error.\t\t\t\t\t| " + Time_Stamp)
elif "1030" in line:
#UserFile.write("\nERROR: The provisioning has failed. The device and apikey key were not returned")
setup.append("\nDevice and apikey key were not returned | " + Time_Stamp)
Error_List.append("\nDevice and apikey key were not returned | " + Time_Stamp)
if Search_Count == Loop_Count-2:
Search_Func(Error_List,setup,Error_Finder,Search_Count)
#Need to clear the Error_List when the Error Locator button is press when it is press it is running search again and adding the the errors back as a 2nd duplicate
################################################################################################
def Search_Func(Error_List, setup, Error_Finder,Search_Count):
if Error_Finder == True:
if not Error_List:
Text_Box.insert('1.0',"There are no Errors Found")
for text in reversed(Error_List):
Text_Box.insert('1.0', text)
UserFile.write(text)
else:
for text in setup:
Text_Box.insert('1.0', text)
UserFile.write(text)
#Main Function (cursor setup, variables for count ping and hits)
################################################################################
def main(filename,Error_Finder):
list = create_connection(filename) # create_connection(database)
global Loop_Count
cur = list.cursor()
cur.execute("SELECT * from error_log ")
rows = cur.fetchall()
count = 0
Search_Count = 0
pings = 1
hits = 0
info = []
Loop_Count = rows[:]
Loop_Count = len(Loop_Count)
for row in rows:
info.append(row[2])
#Regex Grab
#########################################################################
m = re.search(r"(?s)id: (?P<username>.+?) - (?P<password>.+?)'.*Appliance: (?P<modelnumber>\S+).*macAddress: (?P<macaddress>.+?)'.*appl name: (?P<applname>\S+)", str(info))
if (info): # - (?P<password>.+?)'.*App...
try:
if Error_Finder == False:
UserFile.write( 'Username: {}, Modelnumber: {}, Macaddress: {}, applname: {}\n\n'.format(m.group('username'),m.group('modelnumber'),m.group('macaddress'),m.group('applname')))
Text_Box.insert('1.0','\n\nUsername:\t\t {}\nModelnumber:\t\t {}\nMacaddress:\t\t {}\napplname:\t\t {}\n\n'.format(m.group('username'),m.group('modelnumber'),m.group('macaddress'),m.group('applname')))
#Search counters and Callers Password: {},
#########################################################################
count = 0 # reset count
pings = 1 # reset pings
hits = 0 # reset hits
for row in rows:
Search_Count += 1
Friendly_Output(str(row[2]), count, pings, Error_Finder,str(row[1]),Search_Count)
info.append(row)
if "onRecordButton - Calling" in str(row):
count += 1
pings = 1
if "wifiScanTimerEvent(timer:)" in str(row):
pings = pings + 1
except:
print("Type None Occured")
# GUI
################################################################################
window = tk.Tk()
window.title("Viking Range SuChef Diagnostics")
width_value = window.winfo_screenwidth()
height_value = window.winfo_screenheight()
window.geometry(f"{width_value}x{height_value}+0+0")
text_height = 50#height_value/20
text_width = 115#width_value/9.05
photo = PhotoImage(file = "glass-teal.png")
background_image=tk.PhotoImage(file = "glass-teal.png")
background_image = background_image.zoom(2)
background_label = tk.Label(window, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
def Load_File():
global fname
global Error_Finder
global Error_List
global setup
Error_List = []
setup = []
fname = askopenfilename(filetypes = (("SQL Database", "*.db"), ("All Files","*.*")))
Text_Box.delete(1.0,tk.END)
Error_Finder = False
main(fname, Error_Finder)
return fname
def Clear_Log():
Text_Box.delete(1.0,tk.END)
def Find_Errors():
try:
if fname:
Text_Box.delete(1.0,tk.END)
Error_Finder = True
Search_Func(Error_List, None, Error_Finder,None)
except:
Text_Box.insert('1.0', "You must First select a File")
def ViewFunc():
try:
if fname:
ErrorFinder = False
Text_Box.delete(1.0,tk.END)
Search_Func(None, setup, Error_Finder, None)
except:
Text_Box.insert('1.0', "You must first select a File")
#Label
label = tk.Label(text = "Viking Range Service Application", font = "Arial") #fg = "blue"
label.pack()#grid(column = 0, row = 0)
#Browse_Button
Browse_Button = tk.Button(text = "Browse Files",cursor="cross", command = Load_File)
Browse_Button.pack()#grid(column = 0, row = 1)
Clear_Button = tk.Button(text = "Clear", command = Clear_Log)
Clear_Button.pack()#grid(column = 0, row = 1)
#Text field
Text_Box = tk.Text(height = int(text_height), width = int(text_width), background = "black", foreground = "white")
#Text_Box.place(anchor = tk.CENTER)
Error_Button = tk.Button(text = "Error Locator", command = Find_Errors)
Full_DocB = tk.Button(text = "View Full Document", command = ViewFunc)
Error_Button.pack()#grid(column = 0, row = 1)
Full_DocB.pack()
Text_Box.pack()#grid(column = 0, row = 2)
window.mainloop()
############################################################################################
启动.exe浏览SQL文件的预期过程将其选中,并在黑色文本框中接收可读的输出,并使用几乎相同的文本保存文件。发生的情况是,用户可以启动并选择一个文件,但从不填充文本框,并且该文件已创建,但该文件为空。