在python中读取文件

时间:2009-08-03 20:18:08

标签: python file

试着理解你应该如何在python中读取文件。这就是我所做的,它没有正常工作:

import os.path

filename = "A 180 mb large file.data"
size = os.path.getsize(filename)

f = open(filename, "r")
contents = f.read()
f.close()

print "The real filesize is", size
print "The read filesize is", len(contents)

f = open(filename, "r")

size = 0

while True:
    contents = f.read(4)
    if not contents: break
    size += len(contents)

f.close()

print "this time it's", size

输出:

The real filesize is 183574528
The read filesize is 10322
this time it's 13440

有人知道这里发生了什么? :)

3 个答案:

答案 0 :(得分:5)

如果您的文件混淆了C库,那么您的结果就是预期的。

操作系统认为它是180Mb。

但是,周围散布着空字节,这可能会混淆C stdio库。

尝试使用“rb”打开文件,看看是否会得到不同的结果。

答案 1 :(得分:3)

第一个是以字节为单位的文件大小,有时您将文件作为文本读取并计算个字符。将所有open(filename, "r")更改为open(filename, "rb")即可。

答案 2 :(得分:0)

这不是关于字符串的:Python对字符串中的空字节非常满意。

这是因为您在Windows上并且以文本模式打开文件,因此它将所有“\ n”转换为“\ r \ n”,从而销毁所有二进制数据。

使用模式“rb”

以二进制模式打开文件