范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

太强了!Python开发桌面小工具,让代码替我们干重复的工作

  决定写这篇文章的初衷是来源于一位小伙伴的问题,关于"如何根据数据源用 Python 自动生成透视表",这个问题背后有个非常好的解决思路,让代码替我们做重复的工作,从而减轻工作量,减少出错。
  Python 开发的小工具实际上是将 Python 程序打包成 exe,分享即可用,即便电脑没有安装 Python 环境,也可以使用,用代码提高工作效率,尽量少加班。
  内容大纲明确需求:自动生成透视表【这部分可以换成你的重复性工作】  安装三方依赖库:tkinter 和 pyinstaller  代码实现:包括两部分 Python 生成透视表和桌面 GUI 联动设计  打包 Python 程序 生成 exe 可执行文件  解决 exe 文件可能过大问题:安装虚拟环境  需求背景
  将工作中重复性的操作,利用供应商名称,月份,入库金额三个字段来生成想要的透视表格式。
  安装三方依赖库
  创建桌面窗口,这里使用 tkinter,它是 Python 自带的 GUI 库,安装后即可使用。  pip install tkinter
  使用 pyinsatller 将程序打包成 exe,好处是不需要将代码部署到服务器,直接将打包好的 exe 发给对方,就能直接使用,对于这种小而轻的功能非常友好。  pip install pyinstaller 代码实现
  Excel 文件生成透视表和筛选数据,文件名:excel_to_pivot.py  import pandas as pd import numpy as np class ExcelToPivot(object):     def __init__(self, filename, file_path):         self.file_name = filename         self.file_path = file_path     """         excel自动转透视表功能         返回透视结果     """     def excel_Pivot(self):         print(self.file_path)         data = pd.read_excel(self.file_path)         data_pivot_table = pd.pivot_table(data, index=["供应商名称", "月份"], values=["入库金额"], aggfunc=np.sum)         return data_pivot_table     """         按条件筛选,并保存     """     def select_data(self, name, month):         data_pivot_table = self.excel_Pivot()         data_new = data_pivot_table.query("供应商名称 == ["{}"] & 月份 == {}".format(name, month))         data_new.to_excel("{}.xlsx".format(str(self.file_name).split(".")[0]))         return "筛选完成!" if __name__ == "__main__":     filename = input("请输入文件名字:")     path = "C:/Users/cherich/Desktop/" + filename     pross = ExcelToPivot(filename, path)     print(pross.select_data("C", 4))
  设计桌面窗口功能,文件名:opration.py  from tkinter import Tk, Entry, Button, mainloop import tkinter.filedialog import excel_to_pivot from tkinter import messagebox from tkinter import ttk def Upload():     global filename, data_pivot_table     try:         filename = tkinter.filedialog.askopenfilename(title="选择文件")         pross = excel_to_pivot.ExcelToPivot(str(filename).split("/")[-1], filename)         data_pivot_table = pross.excel_Pivot()         messagebox.showinfo("Info", "转换成功!")     except Exception as e:         print(e)         messagebox.showinfo("Info", "转换失败!") def select(name, month):     try:         print("供应商名称 == ["{}"] & 月份 == {}".format(name, month))         data_new = data_pivot_table.query("供应商名称 == ["{}"] & 月份 == {}".format(name, month))         data_new.to_excel("{}.xlsx".format(str(filename).split(".")[0]))         messagebox.showinfo("Info", "筛选完成并生成文件!")         root.destroy()     except Exception as e:         print(e)         messagebox.showinfo("Info", "筛选失败!") root = Tk() root.config(background="#6fb765") root.title("自动转透视表小工具") root.geometry("500x250") e1 = Entry(root, width=30) e1.grid(row=2, column=0) btn1 = Button(root, text=" 上传文件 ", command=Upload).grid(row=2, column=10, pady=5) box1 = ttk.Combobox(root) # 使用 grid() 来控制控件的位置 box1.grid(row=5, sticky="NW") # 设置下拉菜单中的值 box1["value"] = ("A", "B", "C", "D", "供应商") # 通过 current() 设置下拉菜单选项的默认值 box1.current(4) box2 = ttk.Combobox(root) box2.grid(row=5, column=1, sticky="NW") box2["value"] = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, "月份") box2.current(12) # 编写回调函数,绑定执行事件 def func(event):     global b1, b2     b1 = box1.get()     b2 = box2.get() # 绑定下拉菜单事件 box1.bind("<>", func) box2.bind("<>", func) btn2 = Button(root, text=" 筛选数据 ", command=lambda: select(b1, b2)).grid(row=30, column=10, pady=5) mainloop()
  如果运行结果如上,说明代码没有问题了,可以进行下一步。  打包 Python 程序生成 exe
  打开 DOS 窗口并切换到 两个 py 文件所在的目录,注意路径中不要有中文。  pyinsatller -F -w opration.py
  pyinstaller 指令的常见可选参数:  -i 给应用程序添加图标  -F 指定打包后只生成一个exe格式的文件  -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)  -c –console, –nowindowed 使用控制台,无界面(默认)  -w –windowed, –noconsole 使用窗口,无控制台  -p 添加搜索路径
  在当前的目录下,将会生成两个文件夹:build 和 dist。dist 里面就是所有可执行 exe 文件,发送快捷方式到桌面,点击 opration.exe 就能运行了,可以发它的快捷方式发送到桌面,双击就可以。  解决 exe 文件可能过大问题
  有的伙伴 Python 环境刚安装没多久,可能不存在这个文件过大的问题。像我的电脑里安装了 Python 很多的依赖包和 anaconda 等等,打包出来的文件居然 660M,打包时间长,执行时还卡,后来经过整改缩小到 31M,打包快,秒级执行。解决方案是在 Windows 系统下安装一个 Python 的虚拟环境,前提是已经在电脑上安装过 Python 才可以进行如下操作。
  找到 Python 所在路径,如果忘记了,可以在电脑左下角搜索【编辑系统环境变量】——【用户变量】——【PATH】中找到
  配置虚拟环境
  虚拟环境可以理解为是 Python 解释器的一个副本,在这个环境你可以安装私有包,而且不会影响系统中安装的全局 Python 解释器。虚拟环境非常有用,可以在系统的 Python 解释器中避免包的混乱和版本的冲突。
  重要是不同虚拟环境可以搭建不同的 Python 版本,创建时候选择,我们这里需要一个相对 "干净" 的 Python 环境,没有安装过多依赖包,避免 exe 打包文件过大,所以用到虚拟环境。  安装虚拟环境依赖包pip install virtualenv pip install virtualenvwrapper-win 创建虚拟环境命令mkvirtualenv -p="C:UserscherichAppDataLocalProgramsPythonPython38python.exe" py38
  进入虚拟环境,可以看到只有几个默认的 Python 库
  这时可以测试一下代码,是否缺少相关依赖,比如我这个缺少 Pandas,openpyxl,依次按照 pip install 包名安装即可,非常重要的点:pyinstaller 必须重新安装,文件才会缩小。
  上述操作完成后,打包就可以了,最后退出虚拟环境即可。
  退出虚拟环境  deactivate
  整个自动化思路的实现就完成了,大家可以将整个流程套用到你现有的重复性工作中,在过程中有两个需要注意的点,如下:
  尽量不要用中文路径,要不会报些莫名其妙的错误。
  导包是尽量避免使用 import * 导入不必要的包,节省打包和执行时间。
  让代码自动工作,省下来的时间,摸摸鱼,打打小游戏不好么~

火箭或与魔术进行交易,老戈登成筹码,四换三得到班巴值吗?火箭队今天面对联盟顶级强队雄鹿队,打出了一场非常漂亮的比赛。他们用自己的防守成功地限制住了对手,取得了一场宝贵的胜利。今天表现最好的球员是杰伦格林,拿下了全场最高的30分。在最后五讨论如果你是火箭总经理斯通交易截止日前ampampamp明夏该如何运作?(原文发表于12月12日,内容为TheAthletic网站KellyIko和DannyLeroux的讨论,不代表译者观点)火箭目前的战绩(8胜18负)和我们想象中差不多,在培养年轻刻骨铭心的原生家庭三十年,今日剜心刮骨,问苍天,何时治愈问青年家是什么?她说家是粉红色玫瑰,有刺,也有花蕾。家是甜蜜的吻热烈的拥抱柔情似水的情话和思念时的一封信。问中年家是什么?她说家是心灵与肉体的港湾,能停泊万吨巨轮,也能栖息独木小舟超越规格的惊喜感小米13Pro拍照功能详解与实拍样张Hi,我是溢图科技。作为小米与徕卡合作的第二批产品,小米13Pro不仅得到了12SUltra的能力下放,还拥有一些让我颇为惊喜的新特性。影像配置详解广角主摄小米13Pro采用了与1JAVA中的注解可以继承吗?前言注解想必大家都用过,也叫元数据,是一种代码级别的注释,可以对类或者方法等元素做标记说明,比如Spring框架中的Service,Component等。那么今天我想问大家的是类被2050年的中国足球2022世界杯中国足球衰落的根本原因是什么人总要喜欢点什么。世界杯正在如火如荼的进行中,但对绝大多数中国人来说只能去远远地隔屏感受澎湃的热情。虽然没有主队,但中国人的世界杯热情依然如何实现延迟队列(JDKmysqlredisRabbit)何为延迟队列队列,即先进先出的数据结构,就和食堂打饭一样,排在最前面的先打饭,打完饭就走延迟队列即队列中的元素相比以往多了一个属性特征延迟。延迟队列中的每个元素都指定了延迟时间,表县委大院男三把演技炸裂玩出新花样,全程皱眉,台词硬挤县委大院男三把演技炸裂玩出新花样,全程皱眉,台词硬挤!对此,你们大家有什么看法?网友1说实话黄老师早期出道还是能沉下心来认真演戏,但是演技也不是传销的那么惊艳后期飘了,进驻综艺节目县委大院看似演技很牛,却经不起推敲的两个人,演技被严重夸大电视剧县委大院不愧是正午阳关御用导演孔笙的又一力作,自从播出以来收视率一直领跑,该剧把基层干群的风貌刻画得太真实。梅晓歌上任后面临的难题其实都不算太大的事情,可就是这些动员钉子户等县委大院揭露官场潜规则,直面现实,它的成功有原因最近由正午阳光拍摄的关于官场生活的年度大剧县委大院正在热播当中。在短短播出的两集里就收视破2,在众多平台上收视率都很高。这部以基层干部带领群众脱贫的故事为什么这么受欢迎呢,今天就让人中之龙维新!极公布全新支线剧情照功能等游戏要素人中之龙维新!极公布全新支线剧情娱乐场所别样生活以及新增的拍照功能等充实的游戏要素世嘉股份有限公司宣布,预计于2023年2月22日(周三)在PlayStation5PlayStat
国产平板电脑PK赛,谁才是你心中的平板王者?4月11日VIVO发布了第一款VIVO平板vivoPad,自此国产手机厂商均有了自家的平板,那各厂商的平板都有那些特点呢?我们来分别看一下一华为华为平板分为HUAWEIMatePa新方法使科学家们能够以自然界中没有的方式合成晶体合成晶体的新方法使研究人员发现了一种全新的金属相,这可能对新技术有用。结果通过高级光子源得到了证实。由西北大学和密歇根大学领导的一个研究小组开发了一种将粒子组装成胶体晶体的新方法,微信对手来了,5G手机拨号即可视频通话!苹果手机暂时不行继5G消息后,又一面向C端的5G应用面世了。4月12日,中国移动发布5G新通话产品。中国移动方面表示,这是基于5G网络环境推出的新一代通话产品,与互联网的语音视频通话相比,它更稳定2022年Q1全球个人电脑市场排名出炉!国产厂商第一CNMO新闻近日,CNMO发现,IDC公布了2022年Q1个人电脑市场的相关信息,以数据的方式揭示了电脑市场的一些现状。电脑是大部分人都离不开的办公用具和娱乐用品,想必有不少网友会教你给婴儿宝宝洗澡的正确方式,新手妈妈请收藏我们的妈妈们在生完小宝宝后,由于身体的原因,在医院期间除了给小宝宝喂奶其余的照顾工作都是由护士完成的,我们宝妈们很多都是第一次为人母,很多亲历亲为的事有时候显得力不从心,特别是如何苹果新Macmini意外曝光这厚度绝了近日某国外开发者从StudioDisplay最新的iOS15。4系统固件中,意外发现了关于Macmini10,1的内容,该内容指向并非现有产品,可以肯定是这是一款新产品。预计苹果新iPhone14细节被曝光,续航问题得以缓解长久以来,iPhone产品的最大弊端就是续航问题,为此苹果方面也想了很多种办法去进行解决,而估计这回在台积电的帮助下,估计在续航方面会有不错的效果出现。目前根据相关消息显示,台积电倒计时两个月!iOS16曝光提高生产力据外媒曝光的消息,苹果将对iOS进行重大改进,同时也会对通知和健康跟踪进行重大改进。不过,Apple也可能正在考虑在iPadOS16上为iPad引入新的多任务界面。彭博社的Mark大容量多门冰箱,分区保鲜防串味对于大多数家庭来说,冰箱是必不可少的家用电器之一,但是很多人都会担心冰箱耗电量问题,那么不妨看看下面这些一级能效冰箱。它们配备有高效的变频压缩机,并结合灵敏的电脑控温方式,温差波动OPPO主动让利,8256G跌至1499,5000mAh7nm芯片说起OPPO,很多国人可能都应该用过这个品牌的手机,从身份地位来说,现在OPPO确实算得上国产中最大牌的类型之一。其实OPPO为什么发展这么快?主要是因为一直坚持丰富的产品布局,科wenno婴儿车上的杀手娃爹妈,别再这样做了带孩子外出游玩,看见过不少这样的现象孩子坐在小推车里又或者睡着后将孩子放到了婴儿车里,为防止太阳晒到孩子,还特意在婴儿车上盖一条毯子。不知道你们看到这样的现象是什么反应,我是看的心