2

我有一个文件 file.txt

正在做

print os.path.getsize(filename)

输出

6510

和做

print len(open(filename).read())

得到我

6355

怎么会 ?我正在使用 Windows 7。如果我在 Windows 资源管理器中查看文件属性,它会说

大小:6.35 KB(6,510 字节)

4

2 回答 2

9

open(filename)以文本模式打开filename

这意味着每个\r\n(回车,换行)都将被转换为\nPython 字符串中的一个。

好像您的文件有 155 行长。

于 2012-07-09T15:05:34.820 回答
-3

这是因为当文件保存在磁盘上时,文件系统也会使用一些额外的字节来存储文件的不同属性,例如创建日期和上次修改日期。当你这样做

print os.path.getsize(filename)

它获取磁盘上实际文件的大小。

但如果你这样做

print len(open(filename).read())

您只需获得内容的长度或存储在文件中的数据,这总是较小的。

正是出于这个原因,Windows 资源管理器的属性窗口会显示大小(即文件内容的实际长度)和磁盘大小,即文件在磁盘上实际占用的字节数。

于 2012-07-09T15:10:17.737 回答