首先安装pyinstaller
pip install -i https://pypi.douban.com/simple pyinstaller
用cd 命令切换到python代码的路径,我的放桌面
cd DeskTop
用打包命令将python代码打包
pyinstaller -F 词达人助手2.0.py
pyinstaller相关参数
-F : 打包成单个可执行文件
-w : 打包之后运行程序,只有窗口不显示命令行
-c : 打包之后运行程序,显示命令行
回车后就会在桌面生成3个相关文件,生成的exe文件就在dist文件夹里其他两个没用可以删除。
词达人助手2.0修改了一些代码,可以做更多题型。见下面完整代码。
# -*- coding: gbk -*-import requestsfrom translate import Translatorimport urllib.requestimport urllib.parseimport jsonimport reimport jsonimport timefiles = []import requestsfrom bs4 import BeautifulSoupimport randomimport ctypesimport sysSTD_INPUT_HANDLE = -10STD_OUTPUT_HANDLE = -11STD_ERROR_HANDLE = -12FOREGROUND_SKYBLUE = 0x0b # 天蓝色std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)# 设置文字颜色def set_cmd_text_color(color, handle=std_out_handle): Bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) return Bool# 重置文字颜色为白色#def resetColor(): # set_cmd_text_color(FOREGROUND_DARKWHITE)# 以指定颜色输出文字def cprint(mess, color): color_dict = { '天蓝色': FOREGROUND_SKYBLUE, } set_cmd_text_color(color_dict[color]) print(mess) #resetColor()# 颜色列表color_list = ['天蓝色',]def fanyi2(word): # 利用GET获取输入单词的网页信息 r = requests.get(url='http://dict.youdao.com/w/%s/#keyfrom=dict2.top'%word) # 利用BeautifulSoup将获取到的文本解析成HTML soup = BeautifulSoup(r.text, "lxml") # 获取字典的标签内容 s = soup.find(class_='trans-container')('ul')[0]('li') # 随机选择输出的颜色 random.shuffle(color_list) # 输出字典的具体内容 for item in s: if item.text: cprint(item.text, color_list[0]) return('='*40+'\n') '''def read(): try: with open("D:\\data\\responseBody.txt", "r",encoding='utf-8') as f: data = f.read() files.append(data) return data except Exception: print("请先配置好Fiddler并在D盘创建名为data的文件夹!") time.sleep(2.5)''' def get_reuslt(repsonse): # 通过 json.loads 把返回的结果加载成 json 格式 result = json.loads(repsonse) #print ("输入的词为:%s" % result['translateResult'][0][0]['src']) return result['translateResult'][0][0]['tgt'] def fanyi(word): # 有道词典 api url = 'http://fanyi.youdao.com/translate' # 传输的参数,其中 i 为需要翻译的内容 key = { 'type': "AUTO", 'i': word, "doctype": "json", "version": "2.1", "keyfrom": "fanyi.web", "ue": "UTF-8", "action": "FY_BY_CLICKBUTTON", "typoResult": "true" } # key 这个字典为发送给有道词典服务器的内容 response = requests.post(url, data=key) # 判断服务器是否相应成功 if response.status_code == 200: # 然后相应的结果 return get_reuslt(response.text) else: print("有道词典调用失败") # 相应失败就返回空 return None def main(data): #填空 if(data['data']['topic_mode'] in [519]): a = data['data']['stem'] print("\n"+a['content']) #单选 elif(data['data']['topic_mode'] in [11,15,21]): a = data['data']['stem'] options = data['data']['options'] print(fanyi(a['content'])) print("\n"+"\n") elif(data['data']['topic_mode'] in [22]): a = data['data']['stem'] options = data['data']['options'] print(fanyi2(a['content'])) print("\n"+"\n") #测试题选英语单词 elif(data['data']['topic_mode']in [17]): a = data['data']['stem'] b = data['data']['options'] print(a['content']) print("----------"+"\n") k=0 for i in b: print(fanyi(b[k]['content'])) k+=1 print("\n"+"-------------------------------------"+"\n") time.sleep(1) #选词(短语) elif(data['data']['topic_mode'] in [32]): a = data['data']['stem'] options = data['data']['options'] cou=1 print(fanyi(a['remark'])) for option in options: print(str(cou)+":"+str(fanyi2(option['content']))) cou+=1 print("\n"+"-------------------------------------"*3+"\n"+"\n") st = input("请输入‘p’继续否则暂停2分钟 ") if st=='p': time.sleep(0.01) else: time.sleep(120) #多选 elif(data['data']['topic_mode'] in [31]): a = data['data']['stem']['remark'] k=0 for i in a: print(a[k]['sen_marked']+"\n") k+=1 print("\n"+"-------------------------------------"+"\n") time.sleep(3.5) #全英文单选 elif(data['data']['topic_mode'] in [42]): a = data['data']['stem']['remark'] print("题目: "+a) options = data['data']['options'] cou=1 for option in options: print(str(cou)+":"+str(fanyi(option['content']))) cou=cou+1 print("\n"+"-------------------------------------"+"\n") time.sleep(2.5) #填单词 elif(data['data']['topic_mode'] in [51]): a = data['data']['stem']['remark'] print(fanyi(a)) print("\n"+"-------------------------------------"+"\n") time.sleep(2.5)if __name__ == '__main__': t=1 try: while True: #data=read() try: with open("D:\\data\\responseBody.txt", "r",encoding='utf-8') as f: data = f.read() files.append(data) except Exception: print("请先配置好Fiddler并在D盘创建名为data的文件夹!") time.sleep(2.5) sys.exit() main(json.loads(data)) time.sleep(2) t=0 except Exception: if t==1: print("请先打开Fiddler,选好单词做一题,再运行本程序!") time.sleep(4) else: print("答题完毕!") time.sleep(1.5)