11
def size_of_dir(dirname):
    print("Size of directory: ")
    print(os.path.getsize(dirname))

問題のコードです。dirnameは、それぞれ約1kbの130個のファイルがあるディレクトリです。この関数を呼び出すと、ディレクトリのサイズではない4624が返されます...これはなぜですか?

4

4 に答える 4

14

この値(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)]).
于 2012-05-01T21:28:52.040 に答える
7

を使用os.path.getsize()すると、ディレクトリのサイズのみが取得され、コンテンツのサイズは取得されません。したがって、getsize()任意のディレクトリを呼び出すと、それらはすべて同じ方法で表されるため、常に同じサイズになります。逆に、ファイルで呼び出すと、実際のファイルサイズが返されます。

コンテンツが必要な場合は、以下のように再帰的に実行する必要があります。

sum([os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f)])
于 2012-05-01T21:25:42.060 に答える
2

最初の答えは私にこれをもたらしました:

>>> 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)
于 2021-03-22T14:13:47.283 に答える
-2
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」になります。

于 2020-04-11T09:25:58.253 に答える