天天看點

python擷取檔案夾大小_Python擷取指定目錄下檔案數量及總大小

大家先看一下Python os子產品中的部分函數

python 路徑相關的函數

os.listdir(dirname):列出dirname下的目錄和檔案

os.getcwd():獲得目前工作目錄

os.curdir:傳回目前目錄(’.’)

os.chdir(dirname):改變工作目錄到dirname

os.path.isdir(name):判斷name是不是一個目錄,name不是目錄就傳回false

os.path.isfile(name):判斷name是不是一個檔案,不存在name也傳回false

os.path.exists(name):判斷是否存在檔案或目錄name

os.path.getsize(name):獲得檔案大小,如果name是目錄傳回0

os.path.abspath(name):獲得絕對路徑

os.path.normpath(path):規範path字元串形式

os.path.split(name):分割檔案名與目錄(事實上,如果你完全使用目錄,它也會将最後一個目錄作為檔案名而分離,同時它不會判斷檔案或目錄是否存在)

os.path.splitext():分離檔案名與擴充名

os.path.join(path,name):連接配接目錄與檔案名或目錄

os.path.basename(path):傳回檔案名

os.path.dirname(path):傳回檔案路徑

下面是代碼:

Python

import os

totalSize = 0

fileNum = 0

dirNum = 0

def visitDir(path):

global totalSize

global fileNum

global dirNum

for lists in os.listdir(path):

sub_path = os.path.join(path, lists)

print(sub_path)

if os.path.isfile(sub_path):

fileNum = fileNum+1 # 統計檔案數量

totalSize = totalSize+os.path.getsize(sub_path) # 檔案總大小

elif os.path.isdir(sub_path):

dirNum = dirNum+1 # 統計檔案夾數量

visitDir(sub_path) # 遞歸周遊子檔案夾

def sizeConvert(size): # 機關換算

K, M, G = 1024, 1024**2, 1024**3

if size >= G:

return str(size/G)+'G Bytes'

elif size >= M:

return str(size/M)+'M Bytes'

elif size >= K:

return str(size/K)+'K Bytes'

else:

return str(size)+'Bytes'

def main(path):

if not os.path.isdir(path):

print('Error:"', path, '" is not a directory or does not exist.')

return

visitDir(path)

def output(path):

print('The total size of '+path+' is:'+sizeConvert(totalSize))

print('The total number of files in '+path+' is:',fileNum)

print('The total number of directories in '+path+' is:',dirNum)

if __name__ == '__main__':

path = r'E://Files'

main(path)

output(path)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

importos

totalSize=0

fileNum=0

dirNum=0

defvisitDir(path):

globaltotalSize

globalfileNum

globaldirNum

forlistsinos.listdir(path):

sub_path=os.path.join(path,lists)

print(sub_path)

ifos.path.isfile(sub_path):

fileNum=fileNum+1# 統計檔案數量

totalSize=totalSize+os.path.getsize(sub_path)# 檔案總大小

elifos.path.isdir(sub_path):

dirNum=dirNum+1# 統計檔案夾數量

visitDir(sub_path)# 遞歸周遊子檔案夾

defsizeConvert(size):# 機關換算

K,M,G=1024,1024**2,1024**3

ifsize>=G:

returnstr(size/G)+'G Bytes'

elifsize>=M:

returnstr(size/M)+'M Bytes'

elifsize>=K:

returnstr(size/K)+'K Bytes'

else:

returnstr(size)+'Bytes'

defmain(path):

ifnotos.path.isdir(path):

print('Error:"',path,'" is not a directory or does not exist.')

return

visitDir(path)

defoutput(path):

print('The total size of '+path+' is:'+sizeConvert(totalSize))

print('The total number of files in '+path+' is:',fileNum)

print('The total number of directories in '+path+' is:',dirNum)

if__name__=='__main__':

path=r'E://Files'

main(path)

output(path)