os.path.getsize返回不正确的值?

Bob*_*les 8 python directory size file

def size_of_dir(dirname):
    print("Size of directory: ")
    print(os.path.getsize(dirname))
Run Code Online (Sandbox Code Playgroud)

是有问题的代码.dirname是一个包含130个文件的目录,每个文件大约1kb.当我调用这个函数时,它返回4624,这不是目录的大小......为什么会这样?

FRD*_*FRD 11

此值(4624B)代表的大小文件描述该目录.目录被描述为inode(http://en.wikipedia.org/wiki/Inode),其中包含有关其包含的文件和目录的信息.

要获取该路径中的文件/子目录数,请使用:

len(os.path.listdir(dirname))
Run Code Online (Sandbox Code Playgroud)

要获得总数据量,您可以使用此问题中的代码,即(如@linker发布)

 sum([os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f)]).
Run Code Online (Sandbox Code Playgroud)


Cha*_*guy 6

使用os.path.getsize()只会获得目录的大小,而不是其内容.因此,如果您调用getsize()任何目录,您将始终获得相同的大小,因为它们都以相同的方式表示.相反,如果您在文件上调用它,它将返回实际的文件大小.

如果你想要内容,你需要递归地做,如下所示:

sum([os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f)])
Run Code Online (Sandbox Code Playgroud)