1. 程式人生 > >Python計算一個目錄下所有檔案(包括子目錄中所有檔案)指定的檔案型別個數

Python計算一個目錄下所有檔案(包括子目錄中所有檔案)指定的檔案型別個數

 輸入工程名計算一個工程專案中C++,Java,Python,GO語言的檔案個數,並找出Python檔案中最大檔案的檔名

1、先讀取檔案地址,找到該資料夾

import os
import os.path
path = 'C:/python學習/Python作業/' + input("請輸入專案名:")

2、給這四個檔案型別個數賦初始值,並建立兩個列表分別存入某檔案型別的檔案大小和檔名(分開存放用於更明白理解)

cppnum = 0
javanum = 0
pynum = 0
gonum = 0
list_size = []
list_name = []

3、計算這四種檔案型別的個數(並將Python檔案的名字和大小存入列表)

for parentdir, dirname, filenames in os.walk(path):
    for filename in filenames:
        if os.path.splitext(filename)[1] == '.cpp':
            cppnum = cppnum + 1
        if os.path.splitext(filename)[1] == '.java':
            javanum = javanum + 1
        if os.path.splitext(filename)[1] == '.py':
            pynum = pynum + 1
            filesize = os.path.getsize(os.path.join(parentdir,filename))
            list_size.append(filesize)
            list_name.append(filename)
        if os.path.splitext(filename)[1] == '.go':
            gonum = gonum + 1

4、轉化存入的檔案大小(自定義一個函式)

def getsizename(size):
    if (size > 1024*1024*1024.0):
        numstr = str(size/(1024*1024*1024.0))
        sizename = numstr[:(numstr.index('.')+3)]+'GB'
    elif (size > 1024*1024.0):
        numstr = str(size/(1024*1024.0))
        sizename = numstr[:(numstr.index('.')+3)]+'MB'
    elif (size > 1024.0):
        numstr = str(size/1024.0)
        sizename = numstr[:(numstr.index('.')+3)]+'KB'
    else:
        sizename = str(size) +'Bytes'
    return sizename

5、輸出結果(輸出最大檔名,可先找到最大檔案在列表中的地址,使用該地址即可找到對應的檔名)

size = max(list_size)
s = getsizename(size)
name = list_name[list_size.index(max(list_size))]
print("C++檔案有",cppnum,"個")
print("Java檔案有",javanum,"個")
print("Python檔案有",pynum,"個")
print("Go檔案有",gonum,"個")
print("其中最大的檔案大小是",s)
print("這個最大的檔名是",name)