我有一个文件 file.txt
正在做
print os.path.getsize(filename)
输出
6510
和做
print len(open(filename).read())
得到我
6355
怎么会 ?我正在使用 Windows 7。如果我在 Windows 资源管理器中查看文件属性,它会说
大小:6.35 KB(6,510 字节)
open(filename)
以文本模式打开filename
。
这意味着每个\r\n
(回车,换行)都将被转换为\n
Python 字符串中的一个。
好像您的文件有 155 行长。
这是因为当文件保存在磁盘上时,文件系统也会使用一些额外的字节来存储文件的不同属性,例如创建日期和上次修改日期。当你这样做
print os.path.getsize(filename)
它获取磁盘上实际文件的大小。
但如果你这样做
print len(open(filename).read())
您只需获得内容的长度或存储在文件中的数据,这总是较小的。
正是出于这个原因,Windows 资源管理器的属性窗口会显示大小(即文件内容的实际长度)和磁盘大小,即文件在磁盘上实际占用的字节数。