Python開發練習-Python查詢當前目錄及子目錄內所有Excel檔案裡是否存在目標數字字元
阿新 • • 發佈:2021-02-19
Python查詢當前目錄及子目錄內所有Excel檔案裡是否存在目標數字字元demo。
1. 遍歷當前目錄及所有子目錄;
2. 讀取所有xls和xlsx檔案;
3. 查詢目標以四位數字字元為例;
4. 返回資訊為檔名,找到的位置資訊。
import time
import os
import xlrd
import copy
import pathlib
def getusefile():
#查當前目錄下所有xls xlsx檔案,返回檔名列表
usefile=[]
excelfile=sorted(pathlib. Path('.').glob('**/*.xls*'))
usefile=[str(tpfile) for tpfile in excelfile]
return copy.deepcopy(usefile)
def rdusefile(fileName,checknum):
#讀一個檔案,並在檔案單元格中查詢目標資料,如果找到就返回檔名及資料
data=xlrd.open_workbook(fileName) #開啟當前目錄下名為 fileName 的文件
worksheets = data. sheet_names() #返回book中所有工作表的名字
findout=[]
for filenum in range(len(worksheets)):
#開啟excel檔案的第filenum張表
sheet_1=data.sheets()[filenum] #通過索引順序獲取sheet表
nrows=sheet_1.nrows #獲取該sheet中的有效行數
ncols=sheet_1.ncols #獲取該sheet中的有效列數
getdata=[]
#讀取檔案資料
for i in range(0,nrows):
tep1=[]
for j in range(0,ncols):
tep1.append(sheet_1.row(i)[j].value)
if tep1:
getdata.append(tep1)
#在檔案資料中查詢目標資料,按字串處理資料
if getdata:
for linedata in getdata:
for index,numtp in enumerate(linedata):
try:
if str(int(numtp))==str(int(checknum)):
local=fileName.split('.')
if int(linedata[index-1])<1000:
weizhi=str(int(linedata[index-1]))
else:
weizhi=str(int(linedata[index]))
findout.append(local[0]+'---'+weizhi)
except:
pass
return copy.deepcopy(findout)
def checknum(num0):
#在當前目錄的所有Excel表裡找一個數字的位置
#獲取當前目錄內所有Excel 檔案列表
filelist=getusefile()
check=[]
#在每一個檔案中查詢目標資料
if filelist:
for filetp in filelist:
findout=rdusefile(filetp,num0)
if findout:
check.extend(findout)
return copy.deepcopy(check)
if __name__ == '__main__':
checkall=checknum('1104') #查數字在哪裡
print('\n'.join(checkall))
關注Python開發練習,200G學習資源免費送,還可以免費處理2.5小時以內的各類小Task。