python - OS.STAT().ST_SIZE 在 Python 中给出了不正确的大小

标签 python python-2.7

os.stat 没有给我正确的输出,每个文件只得到 8192 字节。代码如下

import os

path = "C:\\"

filelist = os.listdir(path)

for i in filelist:
    if os.path.isdir(os.path.join(path, i)):
        print os.path.join(path, i), "is DIR"
    else:
        # fs = filesize
        fs = os.stat(path).st_size
        # fs = os.path.getsize(path)

        print os.path.join(path, i), "size is", fs

这是输出:

C:\$Recycle.Bin is DIR
C:\Config.Msi is DIR
C:\Documents and Settings is DIR
C:\hiberfil.sys size is 8192
C:\pagefile.sys size is 8192
C:\PerfLogs is DIR
C:\Program Files is DIR
C:\Program Files (x86) is DIR
C:\ProgramData is DIR
C:\Python27 is DIR
C:\Recovery is DIR
C:\shared.log size is 8192
C:\System Volume Information is DIR
C:\Users is DIR
C:\vcredist_x86.log size is 8192
C:\Windows is DIR

为什么最大的数是8192?所有不是 dir 的文件的大小都比该文件大得多。 os.stat(path).st_size 和 os.path.getsize(path) 的输出相同。提前致谢。

最佳答案

你忘了os.path.join(path, i)使用 os.stat() 检查文件大小时,所以你总是得到 C:\的大小(这是 8192,Windows 特定的东西)。固定脚本:

import os

path = "C:\\"

filelist = os.listdir(path)

for i in filelist:
    filepath = os.path.join(path, i)
    if os.path.isdir(filepath):
        print filepath, "is DIR"
    else:
        # fs = filesize
        fs = os.stat(filepath).st_size

        print filepath, "size is", fs

关于python - OS.STAT().ST_SIZE 在 Python 中给出了不正确的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783029/

相关文章:

Python 结构将 root 密码作为命令行参数传递不起作用

python - 我应该担心 return "(str) [' item 1', ' item 2' ]"

python - 将内存从 Python 释放回操作系统的方法?

python - 正则表达式-处理 null(当表达式之间不存在字符时)

python - Discord py 向 channel 发送消息

python - RF : Replace ${SPACE}, ${EMPTY} 和 - 值为 '0'

python - 为什么我们需要检查 value 是否等于 None?

python - 在 numpy 中从单个 block 创建 block 矩阵的更好方法?

python-2.7 - 用 BeautifulSoup 替换 python 中的文本

python - 用列表列表中的第一个元素制作字典