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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值