日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
太強了!Python 開發(fā)桌面小工具,讓代碼替我們干重復(fù)的工作!

決定寫這篇文章的初衷是來源于一位小伙伴的問題,關(guān)于"如何根據(jù)數(shù)據(jù)源用 Python 自動生成透視表",這個問題背后有個非常好的解決思路,讓代碼替我們做重復(fù)的工作,從而減輕工作量,減少出錯。

Python 開發(fā)的小工具實際上是將 Python 程序打包成 exe,分享即可用,即便電腦沒有安裝 Python 環(huán)境,也可以使用,用代碼提高工作效率,盡量少加班。

內(nèi)容大綱

  •  明確需求:自動生成透視表【這部分可以換成你的重復(fù)性工作】
  •  安裝三方依賴庫:tkinter 和 pyinstaller
  •  代碼實現(xiàn):包括兩部分 Python 生成透視表和桌面 GUI 聯(lián)動設(shè)計
  •  打包 Python 程序 生成 exe 可執(zhí)行文件
  •  解決 exe 文件可能過大問題:安裝虛擬環(huán)境

1. 需求背景

將工作中重復(fù)性的操作,利用供應(yīng)商名稱,月份,入庫金額三個字段來生成想要的透視表格式。

2. 安裝三方依賴庫

創(chuàng)建桌面窗口,這里使用 tkinter,它是 Python 自帶的 GUI 庫,安裝后即可使用。

pip install tkinter

使用 pyinsatller 將程序打包成 exe,好處是不需要將代碼部署到服務(wù)器,直接將打包好的 exe 發(fā)給對方,就能直接使用,對于這種小而輕的功能非常友好。

pip install pyinstaller

3. 代碼實現(xiàn)

Excel 文件生成透視表和篩選數(shù)據(jù),文件名: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自動轉(zhuǎn)透視表功能
返回透視結(jié)果
"""
def excel_Pivot(self):
print(self.file_path)
data = pd.read_excel(self.file_path)
data_pivot_table = pd.pivot_table(data, index=['供應(yīng)商名稱', '月份'], 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('供應(yīng)商名稱 == ["{}"] & 月份 == {}'.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))

設(shè)計桌面窗口功能,文件名: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', '轉(zhuǎn)換成功!')
except Exception as e:
print(e)
messagebox.showinfo('Info', '轉(zhuǎn)換失敗!')
def select(name, month):
try:
print('供應(yīng)商名稱 == ["{}"] & 月份 == {}'.format(name, month))
data_new = data_pivot_table.query('供應(yīng)商名稱 == ["{}"] & 月份 == {}'.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('自動轉(zhuǎn)透視表小工具')
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")
# 設(shè)置下拉菜單中的值
box1['value'] = ('A', 'B', 'C', 'D', '供應(yīng)商')
# 通過 current() 設(shè)置下拉菜單選項的默認值
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)
# 編寫回調(diào)函數(shù),綁定執(zhí)行事件
def func(event):
global b1, b2
b1 = box1.get()
b2 = box2.get()
# 綁定下拉菜單事件
box1.bind("<>", func)
box2.bind("<>", func)
btn2 = Button(root, text=' 篩選數(shù)據(jù) ', command=lambda: select(b1, b2)).grid(row=30, column=10, pady=5)
mainloop()

如果運行結(jié)果如上,說明代碼沒有問題了,可以進行下一步。

4. 打包 Python 程序生成 exe

打開 DOS 窗口并切換到 兩個 py 文件所在的目錄,注意路徑中不要有中文。

pyinsatller -F -w opration.py

pyinstaller 指令的常見可選參數(shù):

  •  -i 給應(yīng)用程序添加圖標(biāo)
  •  -F 指定打包后只生成一個exe格式的文件
  •  -D –onedir 創(chuàng)建一個目錄,包含exe文件,但會依賴很多文件(默認選項)
  •  -c –console, –nowindowed 使用控制臺,無界面(默認)
  •  -w –windowed, –noconsole 使用窗口,無控制臺
  •  -p 添加搜索路徑

在當(dāng)前的目錄下,將會生成兩個文件夾:build 和 dist。dist 里面就是所有可執(zhí)行 exe 文件,發(fā)送快捷方式到桌面,點擊 opration.exe 就能運行了,可以發(fā)它的快捷方式發(fā)送到桌面,雙擊就可以。

5. 解決 exe 文件可能過大問題

有的伙伴 Python 環(huán)境剛安裝沒多久,可能不存在這個文件過大的問題。像我的電腦里安裝了 Python 很多的依賴包和 anaconda 等等,打包出來的文件居然 660M,打包時間長,執(zhí)行時還卡,后來經(jīng)過整改縮小到 31M,打包快,秒級執(zhí)行。解決方案是在 Windows 系統(tǒng)下安裝一個 Python 的虛擬環(huán)境,前提是已經(jīng)在電腦上安裝過 Python 才可以進行如下操作。

找到 Python 所在路徑,如果忘記了,可以在電腦左下角搜索【編輯系統(tǒng)環(huán)境變量】——【用戶變量】——【PATH】中找到

配置虛擬環(huán)境

虛擬環(huán)境可以理解為是 Python 解釋器的一個副本,在這個環(huán)境你可以安裝私有包,而且不會影響系統(tǒng)中安裝的全局 Python 解釋器。虛擬環(huán)境非常有用,可以在系統(tǒng)的 Python 解釋器中避免包的混亂和版本的沖突。

重要是不同虛擬環(huán)境可以搭建不同的 Python 版本,創(chuàng)建時候選擇,我們這里需要一個相對 "干凈" 的 Python 環(huán)境,沒有安裝過多依賴包,避免 exe 打包文件過大,所以用到虛擬環(huán)境。

安裝虛擬環(huán)境依賴包

pip install virtualenv
pip install virtualenvwrapper-win

創(chuàng)建虛擬環(huán)境命令

mkvirtualenv -p="C:\Users\cherich\AppData\Local\Programs\Python\Python38\python.exe" py38

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

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

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

退出虛擬環(huán)境

deactivate

當(dāng)前文章:太強了!Python 開發(fā)桌面小工具,讓代碼替我們干重復(fù)的工作!
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/dpcpcjc.html