python os.path.getsize与len(f.read())不同

时间:2012-07-09 15:01:58

标签: python file fread

我有一个文件file.txt

print os.path.getsize(filename)

输出

  

6510

并且正在做

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

让我

  

6355

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

  

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

2 个答案:

答案 0 :(得分:8)

open(filename)在文字模式下打开filename

这意味着每个\r\n(回车,换行符)都会被转换为Python字符串中的单个\n

好像你的文件长155行。

答案 1 :(得分:-3)

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

print os.path.getsize(filename)

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

但如果你这样做

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

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

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