python文件分類別統計

標題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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章