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.
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 !