设定以utf-8无BOM格式保存的文件foo.txt的内容如下:
abc你好
现在我们以byte为单位读取文件内容,并显示每个byte的16进制和10进制表示。
if __name__ == '__main__':
f=open('foo.txt' ,'rb')
f.seek(0,0)
while True:
byte = f.read(1)
if byte == '':
break
else:
hexstr = "%s" % byte.encode('hex')
decnum = int(hexstr, 16)
print byte, hexstr, decnum
f.close()
print 'finish'
if __name__ == '__main__':
f=open('foo.txt' ,'rb')
f.seek(0,0)
while True:
byte = f.read(1)
if byte == '':
break
else:
hexstr = "%s" % byte.encode('hex')
decnum = int(hexstr, 16)
print byte, hexstr, decnum
f.close()
print 'finish'
很简单,我们以为rb模式打开文件。每次读取时使用read(1),也就是取1个字节的数据,取得的数据作为str返回,若没有数据可取了,则返回空字符串''。byte是一个只有一个长度为1的字符串,hexstr是byte的16进制表示,内容的int函数将16进制表示的字符串hexstr转换为10进制整数decnum。
以下是运行结果:
a 61 97
b 62 98
c 63 99
� e4 228
� bd 189
� a0 160
� e5 229
� a5 165
� bd 189
finish