def size_of_dir(dirname):
print("Size of directory: ")
print(os.path.getsize(dirname))
問題のコードです。dirnameは、それぞれ約1kbの130個のファイルがあるディレクトリです。この関数を呼び出すと、ディレクトリのサイズではない4624が返されます...これはなぜですか?
この値(4624B)は、そのディレクトリーを記述するファイルのサイズを表します。ディレクトリは、そこに含まれるファイルとディレクトリに関する情報を保持するiノード(http://en.wikipedia.org/wiki/Inode )として記述されます。
そのパス内のファイル/サブディレクトリの数を取得するには、次を使用します。
len(os.listdir(dirname))
データの総量を取得するには、この質問のコードを使用できます。つまり、(@ linkerが投稿したように)
sum([os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f)]).
を使用os.path.getsize()
すると、ディレクトリのサイズのみが取得され、コンテンツのサイズは取得されません。したがって、getsize()
任意のディレクトリを呼び出すと、それらはすべて同じ方法で表されるため、常に同じサイズになります。逆に、ファイルで呼び出すと、実際のファイルサイズが返されます。
コンテンツが必要な場合は、以下のように再帰的に実行する必要があります。
sum([os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f)])
最初の答えは私にこれをもたらしました:
>>> sum([os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f)])
1708
これも私には正しくありません:((私は自分のcwdをチェックしました)
以下のコードは私に近い結果をもたらしました
total_size = 0
for folders, subfolders, files in os.walk(dirname):
for file in files:
total_size += os.path.getsize(os.path.join(folders, file))
print(total_size)
import os
def create_python_script(filename):
comments = "# Start of a new Python Program"
#filesize = 0
with open(filename, 'w') as new_file:
new_file.write(comments)
cwd=os.getcwd()
fpath = os.path.abspath(filename)
filesize=os.path.getsize(fpath)
return(filesize)
print(create_python_script('newprogram.py'))
31バイトである必要がありますが、結果は「0」になります。