成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

太強了!Python 開發桌面小工具,讓代碼替我們干重復的工作!

開發 后端
Python 開發的小工具實際上是將 Python 程序打包成 exe,分享即可用,即便電腦沒有安裝 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("<<ComboboxSelected>>", func)
box2.bind("<<ComboboxSelected>>", 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:\Users\cherich\AppData\Local\Programs\Python\Python38\python.exe" py38

進入虛擬環境,可以看到只有幾個默認的 Python 庫

這時可以測試一下代碼,是否缺少相關依賴,比如我這個缺少 Pandas,openpyxl,依次按照 pip install 包名安裝即可,非常重要的點:pyinstaller 必須重新安裝,文件才會縮小。

上述操作完成后,打包就可以了,最后退出虛擬環境即可。

退出虛擬環境

deactivate

整個自動化思路的實現就完成了,大家可以將整個流程套用到你現有的重復性工作中,在過程中有兩個需要注意的點,如下:

盡量不要用中文路徑,要不會報些莫名其妙的錯誤。

導包是盡量避免使用 import * 導入不必要的包,節省打包和執行時間。

讓代碼自動工作,省下來的時間,摸摸魚,打打小游戲不好么~

責任編輯:龐桂玉 來源: AI科技大本營
相關推薦

2022-08-11 10:07:59

Python工具代碼

2009-11-19 08:48:10

Windows 7桌面工具

2020-11-26 12:05:44

Python小工具代碼

2021-05-20 11:30:17

Python工具代碼

2021-05-10 11:06:31

Python工具代碼

2009-07-07 08:49:33

微軟Windows 7新功能

2013-03-29 14:46:33

App開發小工具輔助工具

2021-11-05 06:57:50

架構工具代碼

2017-02-06 10:10:34

2023-03-06 08:03:10

Python可視化工具

2025-01-22 14:02:35

2018-07-17 15:51:43

編程語言PythonJSON

2011-03-10 09:03:35

Python

2016-09-01 08:36:27

Windows 10離線小工具

2012-08-31 09:22:00

微軟Win 7

2015-03-26 10:34:02

Android開發工具

2023-12-20 07:41:41

2024-09-24 17:54:26

Python開發

2010-07-01 10:24:30

UML小工具

2009-12-08 14:02:25

Windows 7小工
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 俺去俺来也www色官网cms | 九九热这里只有精品在线观看 | 欧美日韩在线观看视频网站 | 亚洲精品久久久久国产 | 国产成人精品免高潮在线观看 | 亚洲免费福利视频 | 欧美男人亚洲天堂 | 亚洲成人免费av | 精品国产乱码久久久久久88av | 欧洲精品码一区二区三区免费看 | 欧美videosex性极品hd | 亚洲三级在线观看 | 中文字幕一区二区三区四区五区 | 成人影视网址 | 真人一级毛片 | 一区二区三区欧美大片 | 午夜精品久久久久久久久久久久 | 欧美一级免费观看 | 中文av电影| 中文字幕亚洲一区二区va在线 | 日韩在线大片 | 亚洲啪啪 | 国产美女一区二区 | 久久的色 | 污片在线观看 | 精品国产一区二区三区性色av | 91久久久久久久久久久久久 | 亚洲国产一区二区三区, | 欧美精品一区二区三区蜜臀 | 久久999| 国产欧美综合在线 | 国产激情亚洲 | 日韩中文字幕网 | 免费观看的av毛片的网站 | 噜啊噜在线 | 麻豆a级片| 日本免费一区二区三区 | 97日日碰人人模人人澡分享吧 | 视频在线一区二区 | 九九精品在线 | 久久久久久国产精品免费免费狐狸 |