设定以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'
很简单,我们以为rb模式打开文件。每次读取时使用read(1),也就是取1个字节的数据,取得的数据作为str返回,若没有数据可取了,则返回空字符串''。byte是一个只有一个长度为1的字符串,hexstr是byte的16进制表示,内容的int函数将16进制表示的字符串hexstr转换为10进制整数decnum。
以下是运行结果:
a 61 97b 62 98c 63 99� e4 228� bd 189� a0 160� e5 229� a5 165� bd 189finish