我是靠谱客的博主 慈祥盼望,最近开发中收集的这篇文章主要介绍Python学习笔记015——readline与readlines的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

示例1

读取同样一个文件binary_read_1.txt。

春眠不觉晓,处处闻啼鸟。
夜来风雨声,花落知多少。

其中该文件内容被下段代码读出(注意,这里是采用的readlines)

f = open("binary_output_1.txt", 'rb')

b = f.readlines()  #b 绑定资源句柄  字节串
if type(b) == str:
    print("b是字符串")
elif type(b) == bytes:
    print("b是字节串")
else:
    print("b是其它类型")

print(b)
f.close()

运行结果:

b是其它类型
[b'xe6x98xa5xe7x9cxa0xe4xb8x8d
xe8xa7x89xe6x99x93xefxbcx8cxe5
xa4x84xe5xa4x84xe9x97xbbxe5x95
xbcxe9xb8x9fxe3x80x82n', b'xe5xa4
x9cxe6x9dxa5xe9xa3x8exe9x9bxa8
xe5xa3xb0xefxbcx8cxe8x8axb1xe8
x90xbdxe7x9fxa5xe5xa4x9axe5xb0
x91xe3x80x82n']

运行结果是每段开始以b‘’包含字符串,形成字节串。原文件换行处以n结尾。

 

如果该文件被下段代码读取(注意,这里是采用的readline)

f = open("binary_output_1.txt", 'rb')

b = f.readline()  #b 绑定资源句柄  字节串
if type(b) == str:
    print("b是字符串")
elif type(b) == bytes:
    print("b是字节串")
else:
    print("b是其它类型")

print(b)
f.close()

运行结果

b是字节串
b'xe6x98xa5xe7x9cxa0xe4xb8x8d
xe8xa7x89xe6x99x93xefxbcx8cxe5
xa4x84xe5xa4x84xe9x97xbbxe5x95
xbcxe9xb8x9fxe3x80x82n'

对比两个代码的运行结果:

readlines()显示的为非字节串,而readline()显示的为字节串,实际内容一致。

示例2

读取同样一个文件binary_read_2.txt。

1 ABCDEFabcdef012345
2 
3 

用下段代码读取

f = open("binary_output_2.txt", 'rb')

b = f.readlines()  #b 绑定资源句柄  字节串
if type(b) == str:
    print("b是字符串")
elif type(b) == bytes:
    print("b是字节串")
else:
    print("b是其它类型")

print(b)
f.close()

运行结果:

b是其它类型
[b'ABCDEFabcdef012345n', b'n']

若采用readline()读取

f = open("binary_output_2.txt", 'rb')

b = f.readline()  #b 绑定资源句柄  字节串
if type(b) == str:
    print("b是字符串")
elif type(b) == bytes:
    print("b是字节串")
else:
    print("b是其它类型")

print(b)
f.close()

运行结果

b是字节串
b'ABCDEFabcdef012345n'

 


 

为什么readline()读取时为字节串,readlines()读取时为其他类型呢?

因为当readline()读取时,将原文件行内容进行了转换,以b''形式将其转变成字节串形式;

当readlines()读取信息时,以换行符为结尾形成字节串,同时将字节串为元素组成列表,所以为其他形式

 


 

为什么应为字母和数字在转换字节串时直接输出,而汉字则时不能直接显示?

在字节串bytes中,当字节值超出ASCII字符范围内时,会以x##形式显示字节流,其中三个x##形式代表一个汉字

例如

>>> b'xe6x98xa5'.decode('utf-8',errors="ignore")
''

详细信息可以参考廖雪峰博客的python-字符串和编码部分

 

最后

以上就是慈祥盼望为你收集整理的Python学习笔记015——readline与readlines的区别的全部内容,希望文章能够帮你解决Python学习笔记015——readline与readlines的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部