龙空技术网

Python递归遍历目录计算目录大小

采采0I0r 415

前言:

此刻我们对“python遍历文件大小”都比较注意,兄弟们都想要知道一些“python遍历文件大小”的相关内容。那么小编同时在网上汇集了一些关于“python遍历文件大小””的相关知识,希望各位老铁们能喜欢,我们快快来了解一下吧!

如果要得到一个目录下的子目录名,子目录大小,文件名,文件大小等参数,递归遍历是常用的方法,下面是一个python脚本例程

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import os

import time

dic = {

'sum_size':0,

'file_amounts':0,

'directory_amounts':0

}

files = []

def rescusive(path):

dirs=[]

items = os.listdir(path)

for item in items:

item = os.path.join(path,item)

if os.path.isfile(item) and item not in files:

files.append(item)

elif os.path.isdir(item) and item not in dirs:

dirs.append(item)

for directory in dirs:

dic['directory_amounts'] += 1

rescusive(directory) # 递归遍历子目录

def get_size(path, record): # record是记录程序运行结果的文件名

rescusive(path) # 遍历目录

files.sort() #文件排序

with open(record,mode="a+",encoding='utf-8') as f:

for file in files:

size = os.path.getsize(file)

print(file,size)

dic['file_amounts'] += 1

dic['sum_size'] += size

data = '{} {}\n'.format(file,size)

''' 格式化字符串的函数 str.format(),它增强了字符串格式化的 功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序 '''

f.write(data)

f.close()

return dic['sum_size']

if __name__ == '__main__':

path = './npy'

record = 'data.txt'

localtime = time.asctime(time.localtime(time.time())) # 取当地时间,

print(localtime)

with open(record, mode="a+",encoding='utf-8') as f:

f.write(localtime)

f.write('\n')

result = get_size(path,record)

print(result)

amount = '{}:{}:{}'.format(dic['directory_amounts'], dic['file_amounts'], dic['sum_size'])

print(amount)

f.write(amount)

f.close()

print("Hello %s" % path.split('/')[-1].upper())

os.walk() 方法主要用来遍历一个目录内各个子目录和子文件,程序文件输入os模块。

代入参数 os.walk(top)

top :是你所要遍历的目录的地址, 返回的是一个三元组 (dirpath, dirnames, filenames)

返回的三元组介绍

dirpath :string,代表目录的路径,

dirnames :list,包含了dirpath下所有子目录的名字。

filenames :list,包含了非目录文件的名字。

标签: #python遍历文件大小