標題python文件分類別統計
python用來做一些小工具是真心簡單,相比較於其他的編程語言,比如Java,做同樣的事情,複製一張圖片、向excel表格文件中寫入內容、讀取excel表格文件的內容,Java要用50行代碼的話,python只用5行就解決了。下面的小工具寫了2個半小時,給同事用的,在這裏記錄一下。
'''
@Time : 2019/10/5 10:41
@Software: PyCharm
'''
import os
import xlsxwriter
class Image:
'''
圖片類
'''
__user_num = ''
__tag = ''
def __init__(self,user_num,tag):
self.user_num = user_num
self.tag = tag
def get_user_num(self):
return self.user_num
def get_tag(self):
return self.tag
def __str__(self) -> str:
return '工號:'+self.user_num+',標籤:'+self.tag
def __eq__(self, o):
return self.user_num == o.user_num and self.tag == o.tag
def __hash__(self) -> int:
return hash(self.user_num+""+self.tag)
def getJobNumAndTag(path):
lists=[]
for fileName in os.listdir(path):
job_num=fileName[0:8]
str_num = fileName.count('_')
if str_num == 1:
list1 = fileName.split("_")
list2 = list1[1].split('.')
image = Image(list1[0],list2[0])
lists.append(image)
if str_num == 2:
list3 = fileName.split('_')
image = Image(list3[0],list3[1])
lists.append(image)
return lists
def count_nums(lists):
objs = {1}
li=[]
nums = []
all=[]
for i in range(len(lists)):
num = 1
compare1 = lists[i]
if compare1 not in objs:
objs.add(compare1)
for j in range(len(lists)):
if j > i:
if compare1 == lists[j]:
num+=1
nums.append(num)
li.append(compare1)
all.append(li)
all.append(nums)
return all
def writeToExcel(all,excelPath):
# if not os.path.exists(excelPath):
# os.makedirs(excelPath)
objs = all[0]
nums = all[1]
wb = xlsxwriter.Workbook(excelPath)
ws=wb.add_worksheet()
ws.write('A1','工號')
ws.write('B1','種類')
ws.write('C1', '數量')
for i in range(len(objs)):
ws.write('A'+str(i+2),objs[i].get_user_num())
ws.write('B'+str(i+2),objs[i].get_tag())
ws.write('C'+str(i+2),nums[i])
wb.close()
def run(path,excel_path):
images = getJobNumAndTag(path)
nums = count_nums(images)
writeToExcel(nums, excel_path)
if __name__ == '__main__':
path='D:/My Documents/Desktop/積分分類統計/示例/'
excel_path='D:/My Documents/Desktop/積分分類統計/test.xlsx'
run(path,excel_path)