多出读到read(size),size为读取的字节数,但是实际验证下来并非如此 验证结论:size在rb模式打开的情况为字节数,在普通模式(文本模式)打开的情况下为文本字符数
不是是否正确
###read(count)的理解
###普通模式(文本模式)打开 with open('E:\学习\数据分析\Python\利用python进行数据分析\read.txt', 'r') as a_r: a_top10 = a_r.read(10) #读取部分内容,具体数值的含义为需要讨论的点 a_r.seek(0) #句柄重置至初始位置,否则下一步将从当前句柄位置读取 a_whole = a_r.read() #读取全部内容 print('r_read(10):',a_top10) print('r_read(10).encode:', a_top10.encode('ANSI')) #此处txt编码模式为ANSI,将文本模式下的read(10)编码为二进制,用于与下文对比 print('r_readwhole:',a_whole) #打印内容
print('\n')
###二进制模式打开 with open('E:\学习\数据分析\Python\利用python进行数据分析\read.txt', 'rb') as a_rb: a_top10 = a_rb.read(10) #读取部分内容,具体数值的含义为需要讨论的点 a_rb.seek(0) #句柄重置至初始位置,否则下一步将从当前句柄位置读取 a_whole = a_rb.read() #读取全部内容 print('rb_read(10):',a_top10) print('rb_read(10).decode:', a_top10.decode('ANSI')) print('rb_readwhole:',a_whole)#打印内容
#运行结果:
r_read(10): 人的一切痛苦本质上都 r_read(10).encode: b'\xc8\xcb\xb5\xc4\xd2\xbb\xc7\xd0\xcd\xb4\xbf\xe0\xb1\xbe\xd6\xca\xc9\xcf\xb6\xbc' r_readwhole: 人的一切痛苦本质上都是对自己无能的愤怒 rb_read(10): b'\xc8\xcb\xb5\xc4\xd2\xbb\xc7\xd0\xcd\xb4' rb_read(10).decode: 人的一切痛 rb_readwhole: b'\xc8\xcb\xb5\xc4\xd2\xbb\xc7\xd0\xcd\xb4\xbf\xe0\xb1\xbe\xd6\xca\xc9\xcf\xb6\xbc\xca\xc7\xb6\xd4\xd7\xd4\xbc\xba\xce\xde \xc4\xdc\xb5\xc4\xb7\xdf\xc5\xad' 可见若不论什么模式下,size都为字符数,那么r_read(10).encode与rb_read(10)应该相同,r_read(10)与rb_read(10).decode应该相同,rb_read(10).decode比r_read(10)少一半字符,是由于ANSI编码中一个中文占两个字节
r_read(10): 人的一切痛苦本质上都 r_read(10).encode: b'\xc8\xcb\xb5\xc4\xd2\xbb\xc7\xd0\xcd\xb4\xbf\xe0\xb1\xbe\xd6\xca\xc9\xcf\xb6\xbc' r_readwhole: 人的一切痛苦本质上都是对自己无能的愤怒 rb_read(10): b'\xc8\xcb\xb5\xc4\xd2\xbb\xc7\xd0\xcd\xb4' rb_read(10).decode: 人的一切痛 rb_readwhole: b'\xc8\xcb\xb5\xc4\xd2\xbb\xc7\xd0\xcd\xb4\xbf\xe0\xb1\xbe\xd6\xca\xc9\xcf\xb6\xbc\xca\xc7\xb6\xd4\xd7\xd4\xbc\xba\xce\xde \xc4\xdc\xb5\xc4\xb7\xdf\xc5\xad'
r_read(10): 人的一切痛苦本质上都 r_read(10).encode: b'\xc8\xcb\xb5\xc4\xd2\xbb\xc7\xd0\xcd\xb4\xbf\xe0\xb1\xbe\xd6\xca\xc9\xcf\xb6\xbc' r_readwhole: 人的一切痛苦本质上都是对自己无能的愤怒
rb_read(10): b'\xc8\xcb\xb5\xc4\xd2\xbb\xc7\xd0\xcd\xb4' rb_read(10).decode: 人的一切痛 rb_readwhole: b'\xc8\xcb\xb5\xc4\xd2\xbb\xc7\xd0\xcd\xb4\xbf\xe0\xb1\xbe\xd6\xca\xc9\xcf\xb6\xbc\xca\xc7\xb6\xd4\xd7\xd4\xbc\xba\xce\xde \xc4\xdc\xb5\xc4\xb7\xdf\xc5\xad'
可见若不论什么模式下,size都为字符数,那么r_read(10).encode与rb_read(10)应该相同,r_read(10)与rb_read(10).decode应该相同,rb_read(10).decode比r_read(10)少一半字符,是由于ANSI编码中一个中文占两个字节
Sign in to make a reply
Gin阿金
多出读到read(size),size为读取的字节数,但是实际验证下来并非如此 验证结论:size在rb模式打开的情况为字节数,在普通模式(文本模式)打开的情况下为文本字符数
不是是否正确
###read(count)的理解
###普通模式(文本模式)打开 with open('E:\学习\数据分析\Python\利用python进行数据分析\read.txt', 'r') as a_r: a_top10 = a_r.read(10) #读取部分内容,具体数值的含义为需要讨论的点 a_r.seek(0) #句柄重置至初始位置,否则下一步将从当前句柄位置读取 a_whole = a_r.read() #读取全部内容 print('r_read(10):',a_top10) print('r_read(10).encode:', a_top10.encode('ANSI')) #此处txt编码模式为ANSI,将文本模式下的read(10)编码为二进制,用于与下文对比 print('r_readwhole:',a_whole) #打印内容
print('\n')
###二进制模式打开 with open('E:\学习\数据分析\Python\利用python进行数据分析\read.txt', 'rb') as a_rb: a_top10 = a_rb.read(10) #读取部分内容,具体数值的含义为需要讨论的点 a_rb.seek(0) #句柄重置至初始位置,否则下一步将从当前句柄位置读取 a_whole = a_rb.read() #读取全部内容 print('rb_read(10):',a_top10) print('rb_read(10).decode:', a_top10.decode('ANSI')) print('rb_readwhole:',a_whole)#打印内容
#运行结果: