以前零散的用過一點python作數據處理,此次又遇到一個數據處理的小功能,所以,記錄一下整個流程,方便之後查閱。python
功能要求:讀取excel,找指定的PDF文件的頁數是否與excel中記錄的一致數組
整個處理過程包括python環境配置,插件安裝,excel和PDF處理,exe打包app
IDE用的是PyCharm社區版,pyhon環境用的是pandas,它內嵌了不少數據處理的插件,就有咱們此次須要的excel處理插件。spa
安裝其餘插件,PDF處理採用PyPDF2,exe打包採用pyinstaller插件
整個代碼就不貼了,太多了也不想看,下面說一下主要代碼塊excel
1)excel讀寫code
import pandas as pd # 讀取excel文件,configPath爲excel文件路徑,configSheetName爲excel中sheet表單名稱 configTable = pd.read_excel(configPath, configSheetName) # 讀取表單中的數據,返回一個數組,數組存儲每行的信息,fieldCount爲表單數據列總數 configUnit = configTable.iloc[:, range(fieldCount)] configCount = len(configUnit) for k in range(configCount): # 讀取第k行的具體列數據,loc的第二個參數是列名稱 pdfNm = NameUnit.loc[k, pdfNmName] fileNum = NameUnit.loc[k, fileNmName] # 省略若干代碼... # 建立excel對象 writer = pd.ExcelWriter(excelPath + u'_結果.xlsx', engine='xlsxwriter') NameUnit.to_excel(writer, sheet_name=configSheetName)
workbook = writer.book worksheet = writer.sheets[configSheetName] for k in range(configCount): # 省略若干代碼... if pageCount != pageNum: # 若是excel中記錄值與實際值不相等 format1 = workbook.add_format({'bg_color': 'red'}) # 紅色 else: # 相等 format1 = workbook.add_format({'bg_color': 'transparent'}) # 白色 # 設置excel單元格格式 worksheet.conditional_format(color_range, {'type': 'no_blanks', 'format': format1}) worksheet.conditional_format(color_range, {'type': 'blanks', 'format': format1})
# 保存excel writer.save()
2)PDF讀取orm
import PyPDF2 import os # 判斷文件是否存在 if os.path.exists(pdfFilePath): # 獲取PDF對象 pageObj = PyPDF2.PdfFileReader(pdfFilePath) # 獲取PDF頁碼總數 pageNum = pageObj.getNumPages()
1)配置PyInstaller對象
參數-F表示打包成一個exe文件,不帶-F則打包成一個文件夾,裏面不少小文件,前一個運行速度慢一點,後一種運行速度快一點blog
二、遇到的問題
錯誤1:
RecursionError: maximum recursion depth exceeded
解決:在對應的spec文件前面添加最大的行數限制
import sys sys.setrecursionlimit(5000)
錯誤2:
No module named 'pandas._libs.tslibs.timedeltas' in PyInstaller
在pandas安裝路徑下,Anaconda3\Lib\site-packages\PyInstaller\hooks新建hook-pandas.py文件,並根據報錯信息添加缺乏的模塊,如下是我添加的全部依賴模塊
hiddenimports=[ #all your previous hidden imports 'pandas', 'pandas._libs.tslibs.np_datetime', 'pandas._libs.tslibs.nattype', 'pandas._libs.skiplist' ]
點擊Tools -> External Tools -> pyinstaller.exe運行spec文件,等個幾分鐘後就能在工程下的dist文件夾下找到打包的EXE,足足有300M。