Maison >développement back-end >Tutoriel Python >Python obtient des statistiques sur la taille des dossiers

Python obtient des statistiques sur la taille des dossiers

高洛峰
高洛峰original
2017-02-28 10:28:061642parcourir

Méthode fichier/répertoire Python OS

Tout d'abord, je vais présenter plusieurs fonctions utilisées et écrire une petite démo pour une compréhension facile.

Pyhon 获取文件夹的大小统计

os.getcwd()

Renvoie le chemin actuel.

os.listdir (chemin)

Renvoie les dossiers et fichiers sous le chemin actuel (ne revient pas jusqu'au deuxième niveau). La méthode

os.path.join()

join() est utilisée pour connecter des éléments de la séquence avec des caractères spécifiés afin de générer une nouvelle chaîne.

os.path permet à join() de le reconnaître comme un chemin et de compléter automatiquement '' '/' selon le système.

os.path.getsize(path) renvoie la taille du fichier

# -*- encoding: utf-8  -*_
import os

path = os.getcwd() # 获取当前路径
for dirs in os.listdir(path):
    print dirs

file_name = "路径补齐.txt"
path = os.path.join(path,file_name)
print path
size = os.path.getsize("E:\PythonEclipse\PythonStudy\os.listdir\listdirs.py")
print size

Résultat de sortie :

A
B
C
file.txt
listdirs.py
E:\PythonEclipse\PythonStudy\os.listdir\路径补齐.txtA
303

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

top -- chaque dossier du répertoire racine (y compris lui-même ), générant un 3-tuple (chemin d'accès, noms de répertoires, noms de fichiers) [chemin du dossier, nom du dossier, nom du fichier].

topdown -- facultatif, si True ou non spécifié, le 3-tuple d'un répertoire sera généré avant le 3-tuple de l'un de ses sous-dossiers (répertoires de haut en bas). Si topdown est False, le 3-tuple d'un répertoire sera généré après le 3-tuple de l'un de ses sous-répertoires (répertoires de bas en haut).

onerror -- facultatif, est une fonction ; elle est appelée avec un paramètre, une instance OSError. Après avoir signalé cette erreur, continuez la marche ou lancez une exception pour terminer la marche.

followlinks -- Si défini sur true, le répertoire sera accessible via des liens symboliques.

# -*- encoding: utf-8  -*_
import os

for root, dirs, filename in os.walk(os.getcwd()):
    print root
    print dirs
    print filename

Résultat de sortie :

E:\PythonEclipse\PythonStudy\os.listdir
['A', 'B', 'C']
['file.txt', 'listdirs.py']
E:\PythonEclipse\PythonStudy\os.listdir\A
[]
[]
E:\PythonEclipse\PythonStudy\os.listdir\B
[]
['file.txt']
E:\PythonEclipse\PythonStudy\os.listdir\C
[]
[]

Idées d'implémentation de fonctions :

Si vous avez besoin d'obtenir la taille du dossier, parcourez simplement tous les fichiers sous le fichier et obtenez la somme des tailles de tous les fichiers.

Ce qui est implémenté ici est le répertoire actuel. La taille du dossier n'inclut pas la taille du fichier sous le fichier actuel.

Vous devez faire attention au format d'encodage de python.

# -*- encoding: utf-8 -*-
import os
rootdir = os.getcwd()               #获取当前路径

rootdir = rootdir.decode('gbk')
x  = u'统计文件大小.csv'
f = open(os.path.join(rootdir,x), "w+")
for dirname in  os.listdir(rootdir):  #获取二级目录所有文件夹与文件
    Dir = os.path.join(rootdir, dirname)    #路径补齐
    count = 0
    if (os.path.isdir(Dir)):           #判断是否为目录
        for r, ds, files in os.walk(Dir): #遍历目录下所有文件根,目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名称】
            for file in files:      #遍历所有文件
                size = os.path.getsize(os.path.join(r, file)) #获取文件大小
                count += size
        if ((count/1024.0/1024.0) < 1024):
            print  Dir +'\t' + '%.2f'% (count/1024.0/1024.0)+'MB'
            f.write(Dir.encode("gbk") +','+  '%.2f'% (count/1024.0/1024.0)+'MB' + '\n')
        else:
            print  Dir + '\t' + '%.2f' % (count / 1024.0 / 1024.0/1024.0) + 'GB'
            f.write(Dir.encode("gbk") + ',' + '%.2f' % (count / 1024.0 / 1024.0/1024.0) + 'GB' + '\n')
    else:
        continue
f.close()

Pour plus d'articles liés à l'obtention de statistiques sur la taille des dossiers avec Python, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Liste de liste PythonArticle suivant:Liste de liste Python