os.path.getsize Returns Incorrect Value?

元气小坏坏 提交于 2019-12-18 01:03:30

问题


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

is the code in question. dirname is a directory with 130 files of about 1kb each. When I call this function, it returns 4624, which is NOT the size of the directory...why is this?


回答1:


This value (4624B) represents the size of the file that describes that directory. Directories are described as inodes (http://en.wikipedia.org/wiki/Inode) that hold information about the files and directories it contains.

To get the number of files/subdirectories inside that path, use:

len(os.path.listdir(dirname))

To get the total amount of data, you could use the code in this question, that is (as @linker posted)

 sum([os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f)]).



回答2:


Using os.path.getsize() will only get you the size of the directory, NOT of its content. So if you call getsize() on any directory you will always get the same size since they are all represented the same way. On contrary, if you call it on a file, it will return the actual file size.

If you want the content you will need to do it recursively, like below:

sum([os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f)])


来源:https://stackoverflow.com/questions/10404534/os-path-getsize-returns-incorrect-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!