Python中以rb模式读取txt文件返回48而非预期0的原因咨询
问题解答:为什么读取文件输出48而不是0?
嘿,这个问题其实很好理解,核心在于你用了二进制模式读取文件,我给你拆解清楚:
为什么输出是48?
当你用'rb'(二进制读模式)打开文件时,f.read(1)返回的是一个字节对象,比如b'0'。此时你访问这个字节对象的索引[0],得到的是这个字符对应的ASCII码值——而字符'0'的ASCII码正好是48,所以终端会输出48,而不是你预期的数字0。
怎么得到预期的数字0?
有两种简单的解决方法:
方法1:把字节转成字符串再转整数
先将读取到的字节解码成字符串,再转换为整数:
f = open('testinput.txt','rb') byte_content = f.read(1) print(int(byte_content.decode('utf-8'))) # 输出0 f.close()
方法2:用文本模式打开文件
直接使用'r'(文本读模式)打开文件,读取到的内容是字符串,再转成整数即可:
f = open('testinput.txt','r') char_content = f.read(1) print(int(char_content)) # 输出0 f.close()
额外小建议
推荐使用with语句来操作文件,它会自动帮你关闭文件,避免资源泄漏:
with open('testinput.txt', 'rb') as f: byte_content = f.read(1) print(int(byte_content.decode('utf-8')))
内容的提问来源于stack exchange,提问作者Aske Olesen
相关产品推荐
相关产品推荐

