Heim  >  Artikel  >  Backend-Entwicklung  >  Python ruft Statistiken zur Ordnergröße ab

Python ruft Statistiken zur Ordnergröße ab

高洛峰
高洛峰Original
2017-02-28 10:28:061567Durchsuche

Python OS-Datei-/Verzeichnismethode

Zunächst werde ich einige verwendete Funktionen vorstellen und zum leichteren Verständnis eine kleine Demo schreiben.

Pyhon 获取文件夹的大小统计

os.getcwd()

Gibt den aktuellen Pfad zurück.

os.listdir (Pfad)

Gibt die Ordner und Dateien unter dem aktuellen Pfad zurück (keine Rekursion bis zur zweiten Ebene).

os.path.join()

Die Methode „join()“ wird verwendet, um Elemente in der Sequenz mit angegebenen Zeichen zu verbinden, um eine neue Zeichenfolge zu generieren.

os.path ermöglicht es join(), es als Pfad zu erkennen und '' '/' entsprechend dem System automatisch zu vervollständigen.

os.path.getsize(path) gibt die Dateigröße zurück

# -*- 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

Ausgabeergebnis:

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

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

top – jeder Ordner im Stammverzeichnis (einschließlich sich selbst). ), wodurch ein 3-Tupel (Verzeichnispfad, Verzeichnisnamen, Dateinamen) [Ordnerpfad, Ordnername, Dateiname] generiert wird.

topdown – optional, wenn True oder nicht angegeben, wird das 3-Tupel eines Verzeichnisses vor dem 3-Tupel eines seiner Unterordner generiert (Verzeichnisse von oben nach unten). Wenn topdown False ist, wird das 3-Tupel eines Verzeichnisses nach dem 3-Tupel eines seiner Unterordner generiert (Verzeichnisse von unten nach oben).

onerror – optional, ist eine Funktion, die mit einem Parameter aufgerufen wird, einer OSError-Instanz. Nachdem Sie diesen Fehler gemeldet haben, setzen Sie den Rundgang fort oder lösen Sie eine Ausnahme aus, um den Rundgang zu beenden.

followlinks – Wenn auf true gesetzt, wird über Softlinks auf das Verzeichnis zugegriffen.

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

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

Ausgabeergebnisse:

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
[]
[]

Ideen zur Funktionsimplementierung:

Wenn Sie die Größe des Ordners ermitteln möchten, durchsuchen Sie einfach alle Dateien unter der Datei und ermitteln Sie die Summe der Größen aller Dateien.

Was hier implementiert ist, ist das aktuelle Verzeichnis. Die Ordnergröße umfasst nicht die Dateigröße unter der aktuellen Datei.

Sie müssen auf das Codierungsformat von Python achten.

# -*- 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()

Weitere Artikel zum Abrufen von Statistiken zur Ordnergröße durch Pyhon finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Python-ListenlisteNächster Artikel:Python-Listenliste