以下代码pyinstaller打包后无法运行,代码功能是创建web_data_dir文件夹存储json文件当作保存网址的收藏夹,并可以通过webbrowser打开网址
import json
import os
import webbrowser
import time
tim1=time.strftime('%Y.%m.%d %A %H:%M:%S %p')
data_path='web_data_dir'
doing_path=os.getcwd()
line='-'*40
info = F'''
=========================<<<欢迎使用本程序!>>>=========================
{tim1}
'''
#创建网站库与默认收藏夹(默认执行)
def mkweb_data_dir():
all_dir=os.listdir(doing_path)
default_dir='web_data_dir'
if default_dir not in all_dir:
os.mkdir(default_dir)
os.chdir('web_data_dir')
if os.path.exists('默认收藏夹.json')==False:
with open('默认收藏夹.json','w',encoding='utf_8') as f:
password=0
json.dump({
"Password": password,
"URL": {"1": ["百度", "https://www.baidu.com/"],
"2": ["安徽工程大学官网", 'https://www.ahpu.edu.cn/'],
"3": ["超星学习通", 'i.chaoxing.com'],
"4":["学习通刷课工具",'https://microsoftedge.microsoft.com/addons/detail/%E7%AF%A1%E6%94%B9%E7%8C%B4/iikmkjmpaadaobahmlepeloendndfphd'],
"5": ["中国知网", 'https://www.cnki.net/'],
"6": ["智慧团建",'https://zhtj.youth.cn/zhtj/'],
'7': ['CSDN官网', 'https://www.csdn.net/'],
'8': ['虚拟仿真实验', 'http://211.86.232.110:7000/'],
'9': ['安装.netFramework3.5', 'https://download.microsoft.com/download/0/6/1/061F001C-8752-4600-A198-53214C69B51F/dotnetfx35setup.exe'],
'10': ['安装实验大厅', 'http://172.16.5.37:8005/Upload/LabRoom/%E8%99%9A%E6%8B%9F%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83V5.7.exe'],
'11': ['查看电脑.netFramework3.5安装状态方法', 'https://jingyan.baidu.com/article/d71306359d1da913fdf47585.html'],
'12': ['四六级报考与成绩查询', 'https://z325250.weixin.xdf.cn/wechat/series/detail?id=68775'],
'13': ['外网接入安徽工程大学校园网指南', 'https://metc.ahpu.edu.cn/_t501/2016/0516/c7234a39783/page.psp'],
'14': ['四六级报考与成绩查询', 'https://cet.neea.edu.cn/'],
'15': ['vs code安装包下载', 'https://vscode.cdn.azure.cn/stable/d037ac076cee195194f93ce6fe2bdfe2969cc82d/VSCodeUserSetup-x64-1.84.0.exe'],
}
}, f)
os.chdir(doing_path)
# mkweb_data_dir()
#-----------------------------------------------------------------------------------------------------------
#新建个人收藏夹
def mk_web_favorite():
while True:
user_webfavorite_name=input('请输入收藏夹名称:')
all_dir = os.listdir(data_path)
if user_webfavorite_name in all_dir:
print('该收藏夹已经存在!')
else:
user_password=input(f'请为《{user_webfavorite_name}》设置一个密码(直接Enter默认无密码)')
if user_password:
os.chdir(data_path)
with open(fr'{user_webfavorite_name}.json','w',encoding='utf-8') as f:
# url_=OrderedDict()
json.dump({
"Password":user_password,
"URL":{"1":["百度","https://www.baidu.com/"]}
},f) #"URL":{"序号":['网页名称+:',‘网址’]}
print(line+'<创建成功>'+line)
os.chdir(doing_path)
else:
user_password=None
os.chdir(data_path)
with open(fr'{user_webfavorite_name}.json','w',encoding='utf-8') as f:
json.dump({
"Password":user_password,
"URL":{"1":["百度","https://www.baidu.com/"]}
},f)
# {"Password":user_password,"URL":{"序号":['网页名称+:',‘网址’]}}
print(line+'<创建成功>'+line)
os.chdir(doing_path)
user_select = input('<返回主界面?y/n(Enter默认返回)>').strip()
if user_select == 'n' or user_select == 'N':
continue
elif user_select != 'n' or user_select != 'N':
break
f_4=mk_web_favorite
#---------------------------------------------------------------------------------------------------------
#保存网站(默认保存在默认收藏夹)
def save_web_url():
while 1:
favorit_list = os.listdir('web_data_dir')
print(line+'<收藏夹列表>'+line)
for j in favorit_list:
print(j[:-5])
user_select_favorit=input('请输入需要存入的收藏夹名称:')#输入0返回主界面
user_select_favorit1 = user_select_favorit + '.json'
if is_se_fa_in_dic(user_select_favorit1):
js_dict = open_user_webfavorit(user_select_favorit)
#json文件左右内容 js_dict={"Password": null, "URL": {"1": ["a","http:/"]}}
Password=js_dict.get("Password")
url_dict = js_dict.get("URL") #url_dict="URL"={"序号":['网页名称+:',‘网址’]}}
#---------------------------------------------------
last_key=list(url_dict.keys())[-1]
last_key=int(last_key) #定义序号
last_key=last_key+1
url_serial_number=str(last_key)
#----------------------------------------------------
url = input('请输入需要保存的网址:')
url_name=input('请输入网页名称:') #保存数据到有序字典
url_dict.setdefault(url_serial_number,[url_name,url])
new_user_dic={"Password":Password,"URL":url_dict}
os.chdir(data_path)
with open(f'{user_select_favorit}.json', 'w', encoding='utf-8') as f:
json.dump(new_user_dic,f)
os.chdir(doing_path)
user_select = input('<返回主界面?y/n(Enter默认不返回主界面)>').strip()
if user_select == 'n' or user_select == 'N':
continue
elif user_select != 'N' or user_select != 'n':
break
#---------------------------------------------------
else:
print(line+'------>输入无效!<------'+line)
user_s=input('<存入默认收藏夹?y/n(Enter默认返回主界面)>')
if user_s=='Y' or user_s=='y':
js_dict = open_user_webfavorit('默认收藏夹')
# json文件左右内容 js_dict={"Password": null, "URL": {"1": ["a","http:/"]}}
Password = js_dict.get("Password")
url_dict = js_dict.get("URL") # url_dict="URL"={"序号":['网页名称+:',‘网址’]}}
# ---------------------------------------------------
last_key = list(url_dict.keys())[-1]
last_key = int(last_key) # 定义序号
last_key = last_key + 1
url_serial_number = str(last_key)
# ----------------------------------------------------
url = input('请输入需要保存的网址:')
url_name = input('请输入网页名称:') # 保存数据到有序字典
url_dict.setdefault(url_serial_number, [url_name, url])
new_user_dic = {"Password": Password, "URL": url_dict}
os.chdir(data_path)
with open('默认收藏夹.json', 'w', encoding='utf-8') as f:
json.dump(new_user_dic, f)
os.chdir(doing_path)
user_select = input('<返回主界面?y/n(Enter默认不返回主界面)>').strip()
if user_select == 'y' or user_select == 'Y':
break
elif user_select != 'y' or user_select != 'Y':
continue
else:
break
# url_dict="URL":{"序号":['网页名称+:',‘网址’]}
f_1=save_web_url
#--------------------------------------------------------------------------------------------------------
#打开默认收藏夹网址
def open_default_url():
js_dict=open_user_webfavorit('默认收藏夹')
url_dict = js_dict.get("URL") # url_dict="URL":{"序号":['网页名称',‘网址’]}
while 1:
print(line+'<保存的网址列表>'+line)
for key, vale in url_dict.items():
print(f"{key}.{vale[0]}:{vale[1]}")
url_key = input('请输入网址序号:')
try:
a, url = get_value(url_key, url_dict)
except TypeError:
if stop_lopp:
break
continue
webbrowser.open(url)
user_select = input(line+'<返回主界面?y/n>'+line).strip()
if user_select == 'y' or user_select == 'Y':
break
elif user_select != 'y' or user_select != 'Y':
continue
f_6=open_default_url
#------------------------------------------------------------------------------------------------------------
#获取URL字典里的网址
stop_lopp=False
def end_lopp():
global stop_lopp
stop_lopp=True
#定义一个手动结束循环的函数
def get_value(url_key,dic):
try:
dic_=dic[url_key]
return dic_ , dic_[1] #{"Password": null, "URL": {"1": ["a:","http:/"]}}
except Exception:
print(line+'-->输入无效<-!'+line)
user_select = input('<返回上级页面?y/n>')
if user_select == 'y' or user_select == 'Y':
end_lopp()
def get_value1(url_key,dic):
try:
dic_=dic[url_key]
return dic_ , dic_[1] #{"Password": null, "URL": {"1": ["a:","http:/"]}}
except Exception:
print('------------------------->输入无效<!--------------------------')
end_lopp()
def is_se_fa_in_dic(user_select_favorit1):
return user_select_favorit1 in os.listdir('web_data_dir')
#判断用户选择收藏夹是否存在
#打开个人收藏夹中的网页
# {"Password":user_password,"URL":{"序号":['网页名称+:',‘网址’]}}
def open_user_webfavorit_list():
while 1:
favorit_list=os.listdir('web_data_dir')
print(line+'<收藏夹列表>'+line)
for j in favorit_list:
print(j[:-5])
user_select_favorit=input('请输入需要打开的收藏夹(输入0返回主界面)')
if user_select_favorit=='0':
break
user_select_favorit1=user_select_favorit+'.json'
if is_se_fa_in_dic(user_select_favorit1):
js_dict = open_user_webfavorit(user_select_favorit)
user_password = js_dict.get("Password")
if user_password ==None:
url_dict = js_dict.get("URL")#url_dict={"序号":['网页名称+:',‘网址’]}
print(line+'<保存的网址列表>'+line)
for key,vale in url_dict.items():
print(f"{key}.{vale[0]}:{vale[1]}")
# 打开网址()
while 1:
url_key=input('请输入网址序号)')
try:
a,url=get_value(url_key,url_dict)
except TypeError:
if stop_lopp:
break
continue
webbrowser.open(url)
user_select = input('<返回主界面?y/n(Enter默认不返回)>').strip()
if user_select == 'y' or user_select == 'Y':
break
elif user_select != 'y' or user_select != 'Y':
continue
elif user_password!=None:
password0 = input('请输入密码:')
if password0 == user_password:
url_dict = js_dict.get("URL")
print(line+'<保存的网址列表>'+line)
for key, vale in url_dict.items():
print(f"{key}.{vale[0]}:{vale[1]}")
# 打开网址
while 1:
url_key = input('请输入网址序号)')
try:
a, url = get_value(url_key, url_dict)
except TypeError:
if stop_lopp:
break
continue
webbrowser.open(url)
user_select = input('<返回主界面?y/n(Enter默认不返回)>').strip()
if user_select == 'y' or user_select == 'Y':
break
elif user_select != 'y' or user_select != 'Y':
continue
else:
print('该收藏夹不存在!')
#以下默认不返回
user_select = input('---------------<返回主界面?y/n(Enter默认不返回)>----------------').strip()
if user_select == 'y' or user_select == 'Y':
break
elif user_select != 'y' or user_select != 'Y':
continue
f_3=open_user_webfavorit_list
f_0=exit
#---------------------------------------------------------------
#打开收藏夹(获取json文件内容)
def open_user_webfavorit(user_select_favorit):
os.chdir(data_path)
with open(fr'{user_select_favorit}.json','r',encoding='utf-8') as f1:
js_dict=json.load(f1)
os.chdir(doing_path)
return js_dict #json文件里的所有内容
#---------------------------------------------------------------------------------------------------------------
#删除收藏夹
def del_favorit():
while 1:
favorit_list = os.listdir('web_data_dir')
print(line + '<收藏夹列表>' + line)
for j in favorit_list:
print(j[:-5])
user_select_favorit = input('请输入需要删除的收藏夹(输入0返回主界面):')
if user_select_favorit == '0':
break
user_select_favorit1=user_select_favorit+'.json'
if is_se_fa_in_dic(user_select_favorit1):
js_dict=open_user_webfavorit(user_select_favorit) #js_dict={"Password": 0, "URL": {"1": ["\u767e\u5ea6", "https://www.baidu.com/"],
user_password=js_dict.get("Password")
if user_password==None:
u_s=input(f'确认删除收藏夹<{user_select_favorit}>?y/n')
if u_s=='Y' or u_s=='y':
os.chdir(data_path)
os.remove(user_select_favorit1)
os.chdir(doing_path)
print(line+'>删除成功!<'+line)
break
else:
print(line + '>已取消操作<' + line)
user_select = input('<返回上级页面?y/n(Enter默认不返回)>').strip()
if user_select == 'y' or user_select == 'Y':
break
elif user_select != 'y' or user_select != 'Y':
continue
elif user_password != None:
password0 = input('请输入密码:')
if password0 == user_password:
u_s = input(f'确认删除收藏夹<{user_select_favorit}>?y/n')
if u_s == 'Y' or u_s == 'y':
os.chdir(data_path)
os.remove(user_select_favorit1)
os.chdir(doing_path)
print(line + '>删除成功!<' + line)
break
else:
print(line+'>已取消操作<'+line)
user_select = input('<返回上级页面?y/n(Enter默认不返回)>').strip()
if user_select == 'y' or user_select == 'Y':
break
elif user_select != 'y' or user_select != 'Y':
continue
else:
print(line+'>输入无效!<'+line)
break
ff1=del_favorit
#--------------------------------------------------
#删除网址
def del_url(url_key,url_dict,user_select_favorit,js_dict):
Password=js_dict.get("Password")
#-----------------------------------------------------------
url_key_int=int(url_key)
d_l=list(url_dict.keys())
d_l.remove(url_key)
d_l_int=[int(b) for b in d_l]
d_l_int=[x-1 if x>url_key_int else x for x in d_l_int]
d_1=[str(a) for a in d_l_int]
d_v=list(url_dict.values())
new_dict={key:value for key,value in zip(d_1,d_v)}
#------------------------------------------------------------
os.chdir(data_path)
# os.remove(user_select_favorit+'.json')
with open(f"{user_select_favorit}.json",'w',encoding='utf-8') as f:
json.dump({
"Password":Password,
"URL":new_dict},f)
os.chdir(doing_path)
print(line+'<删除成功>'+line)
ff_d=del_url
#----------------------
#改网址
def change_url(url_key,url_dict,user_select_favorit,js_dict):
new_url=input("请输入新网址:")
url_name=input("请输入网址名称:")
new_list=[url_name,new_url]
Password=js_dict.get("Password")
url_dict.update({url_key:new_list})
os.chdir(data_path)
with open(f"{user_select_favorit}.json",'w',encoding='utf-8') as f:
json.dump({
"Password":Password,
"URL":url_dict},f)
os.chdir(doing_path)
print(line+'<修改成功>'+line)
ff_c=change_url
#删改网址
def dc_web_url():
while 1:
favorit_list = os.listdir('web_data_dir')
print(line + '<收藏夹列表>' + line)
for j in favorit_list:
print(j[:-5])
user_select_favorit = input('请选择收藏夹(输入0返回主界面):')
if user_select_favorit == '0':
break
user_select_favorit1=user_select_favorit+'.json'
if is_se_fa_in_dic(user_select_favorit1):
js_dict=open_user_webfavorit(user_select_favorit) #js_dict={"Password": 0, "URL": {"1": ["\u767e\u5ea6", "https://www.baidu.com/"],
user_password=js_dict.get("Password")
if user_password == None:
url_dict = js_dict.get("URL")#url_dict={"序号":['网页名称+:',‘网址’]}
print(line+'<保存的网址列表>'+line)
for key1,vale1 in url_dict.items():
print(f"{key1}.{vale1[0]}:{vale1[1]}")
url_key=input('请选择网址序号:')
print(line+'<选择功能>'+line)
for k in fun_dc:
print(f'{k}:', fun_dc[k][0])
u_ss=input('请选择需要的操作:')
if u_ss.isdigit() and u_ss in ['1','2']:
u_ss1=int(u_ss)
fun_dc[u_ss1][1](url_key,url_dict,user_select_favorit,js_dict)
break
else:
print(line+'>输入无效!<'+line)
break
elif user_password != None:
password0 = input('请输入密码:')
if password0 == user_password:
url_dict = js_dict.get("URL") # url_dict={"序号":['网页名称+:',‘网址’]}
print(line + '<保存的网址列表>' + line)
for key1, vale1 in url_dict.items():
print(f"{key1}.{vale1[0]}:{vale1[1]}")
url_key = input('请选择网址序号:')
print(line + '<选择功能>' + line)
for k in fun_dc:
print(f'{k}:', fun_dc[k][0])
u_ss = input('请选择需要的操作:')
if u_ss.isdigit() and u_ss in ['1', '2']:
u_ss1 = int(u_ss)
fun_dc[u_ss1][1](url_key,url_dict,user_select_favorit,js_dict)
break
else:
print(line + '>输入无效!<' + line)
break
else:
print(line + '>输入无效!<' + line)
break
pass
ff2=dc_web_url
#管理(删除收藏夹or删改网址)
def manage():
while 1 :
for i in fun_manage:
print(f'{i}:',fun_manage[i][0])
manage_user_select= input('请输入需要的功能序号:')
if manage_user_select.isdigit() and manage_user_select in ['0','1','2']:
manage_user_select=int(manage_user_select)
fun_manage[manage_user_select][1]()
user_select = input('-----<返回<<<主界面>>>?y/n(Enter默认返回)>----').strip()
if user_select == 'n' or user_select == 'N':
continue
elif user_select != 'n' or user_select != 'N':
break
else:
print(line+'输入无效'+line)
user_select = input('<返回主界面?y/n(Enter默认返回)>').strip()
if user_select == 'n' or user_select == 'N':
continue
elif user_select != 'n' or user_select != 'N':
break
f_2=manage
#---------------------------------以下是函数字典--------------------------------------------------------------
fun1={
0:['退出程序',f_0],
1:['保存网站',f_1],
2:['打开默认收藏夹网页',f_6],
3:['打开个人收藏夹中的网页',f_3],
4:['新建个人收藏夹',f_4],
5:['管理收藏夹',f_2]
}
fun_manage={
1:['删除收藏夹',ff1],
2:['删改收藏夹中的网址',ff2]
}
fun_dc={
1:['删除网址',ff_d],
2:['更改网址',ff_c]
}
#----------------------------用户主界面--------------------------------
if __name__ == '__main__':
mkweb_data_dir()
print(info)
input(f'<<Enter进入主程序>>')
while True:
print(line+'<<主界面>>'+line)
for i in fun1:
print(f'{i}:', fun1[i][0])
user_select_fun1 = input('请输入需要的功能序号:')
if user_select_fun1.isdigit() and user_select_fun1 in ['0', '1', '2', '3', '4', '5']:
user_select_fun1 = int(user_select_fun1)
fun1[user_select_fun1][1]()
else:
print(line+'>请正确输入!<'+line)