read()的疑问

read()的疑问

我用windowsXP+python2.4.4
想用read读文件
每次读一个字符
遇到有换行的地方就有问题
发现read把'\r'这个字符给忽略了
就算一次把所有的数据都读进来
也是一样的会忽略'/r'字符
请问这可怎么办啊

假如我要计算一个文件的md5
如果随意的忽略字符的话
计算出来的md5怎么可能是正确的哦

[Copy to clipboard] [ - ]
CODE:
import os,sys

f1 = open('C:\\123.txt','r')

while True:
    z=f1.read(1)
    if z:
        print '%d' % (ord(z))
    else:
        break

f1.close()

对于你的这种应用要求,建议使用binary mode打开文件。你上面的代码,使用的是text mode。这种模式下,回车符和换行符会发生转义。
果然全用os.open('xxx',O_BINARY|O_RDONLY)就可以了
谢谢
有这么麻烦吗?

open('xxx', 'rb')

这样就行了。os.open是很底层的函数,这也能找到,真厉害。
谢谢
修改了一下
确实比os.xxx好看

[Copy to clipboard] [ - ]
CODE:
import md5

fd = open('D:\\python-2.4.4.msi', 'rb')
m=md5.new()

while True:
    z=fd.read()
    if z:
        m.update(z)
    else:
        break

print m.hexdigest()
fd.close()

你用不带参数的READ应该就不用WHILE了吧