在Python中读取文件
我在尝试理解如何在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
这不是关于字符串的问题:Python在字符串中是可以处理空字节的。
这是因为你在Windows系统上,并且以文本模式打开文件,这样会把所有的"\n"转换成"\r\n",这就搞坏了你所有的二进制数据。
你应该用二进制模式打开文件,选择"rb"模式。
3
第一个是文件的大小,以字节为单位,其他时候你是把文件当作文本来读取,并且计算字符的数量。把所有的 open(filename, "r")
改成 open(filename, "rb")
就可以正常工作了。
5
如果你的文件让C语言的库搞不清楚状况,那你得到的结果就是这样。
操作系统认为这个文件有180Mb大。
不过,文件里有一些空字节,这可能会让C语言的标准输入输出库感到困惑。
试着用“rb”模式打开这个文件,看看结果是否会有所不同。