试着理解你应该如何在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
有人知道这里发生了什么? :)
答案 0 :(得分:5)
如果您的文件混淆了C库,那么您的结果就是预期的。
操作系统认为它是180Mb。
但是,周围散布着空字节,这可能会混淆C stdio库。
尝试使用“rb”打开文件,看看是否会得到不同的结果。
答案 1 :(得分:3)
第一个是以字节为单位的文件大小,有时您将文件作为文本读取并计算个字符。将所有open(filename, "r")
更改为open(filename, "rb")
即可。
答案 2 :(得分:0)
这不是关于字符串的:Python对字符串中的空字节非常满意。
这是因为您在Windows上并且以文本模式打开文件,因此它将所有“\ n”转换为“\ r \ n”,从而销毁所有二进制数据。
使用模式“rb”
以二进制模式打开文件