ホームページ >バックエンド開発 >Python チュートリアル >Python はフォルダー サイズの統計を取得します
Python OS ファイル/ディレクトリメソッド
まず、使用するいくつかの関数を紹介し、理解しやすいように小さなデモを作成します。
os.getcwd()
現在のパスを返します。
os.listdir (path)
現在のパスの下にあるフォルダーとファイルを返します (下向き再帰はありません)。
os.path.join()
join() メソッドは、シーケンス内の要素を指定された文字で結合し、新しい文字列を生成するために使用されます。
os.path を使用すると、join() がパスとして認識し、システムに従って自動的に ''/' を補完できるようになります。
os.path.getsize(path) ファイルサイズを返します
# -*- 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
出力結果:
A B C file.txt listdirs.py E:\PythonEclipse\PythonStudy\os.listdir\路径补齐.txtA 303
os.walk(top[, topdown=True[, onerror=None[, followlinks=False] ] ])
top -- ルート ディレクトリ内の各フォルダー (それ自体を含む) は、3 つのタプル (ディレクトリパス、ディレクトリ名、ファイル名) [フォルダー パス、フォルダー名、ファイル名] を生成します。
topdown -- オプション。True または指定されていない場合、ディレクトリの 3 タプルは、そのサブフォルダー (ディレクトリは上から下) の 3 タプルより前に生成されます。 topdown が False の場合、ディレクトリの 3 タプルは、そのサブディレクトリ (ディレクトリは下から上) の 3 タプルの後に生成されます。
onerror -- オプションで、1 つのパラメーター (OSError インスタンス) で呼び出される関数です。このエラーを報告した後、ウォークを続行するか、例外をスローしてウォークを終了します。
followlinks -- true に設定すると、ディレクトリはソフト リンクを通じてアクセスされます。
# -*- encoding: utf-8 -*_ import os for root, dirs, filename in os.walk(os.getcwd()): print root print dirs print filename
出力結果:
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 [] []
関数実装アイデア:
フォルダーのサイズを取得するには、そのファイルの下にあるすべてのファイルを走査し、すべてのファイルのサイズの合計を取得するだけです。
ここで実装されるのは現在のディレクトリです。フォルダーのサイズには、現在のファイルの下のファイルのサイズは含まれません。
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()
フォルダー サイズ統計の取得に関する Pyhon 関連の記事については、PHP 中国語 Web サイトに注目してください。