关于python3的readlines(),read()和readline()简介
关于python的readlines(),readline(),read()的介绍1.read()这个函数是把一个文档当成一个字符串(结尾有空字符串)返回。也就是一个文档存储在一个字符串对象中,如果文件很大,就很耗内存。2.readlines(),是把一个文档的每一行(包含行前的空格,行末加一个\n),作为列表的一个元素,存储在一个list中。每一个行作为list的一个元素。3.readline(
关于python的readlines(),readline(),read()的介绍
1.read()
这个函数是把一个文档当成一个字符串(结尾有空字符串)返回。也就是一个文档存储在一个字符串对象中,如果文件很大,就很耗内存。
注:read()和原来的文档相比,输出的时候结尾多了一个'\n'(换行),其余没区别
如果想要输出和原文档一模一样,需要在结果加rstrip(),也就是去掉末尾空格,例如:
有一个文件pi_digits.txt,内容如下:
pi_digits.txt
3.14345345345
23426534534
45345123656
1.py如下
file_name = 'pi_digits.txt'
with open(file_name) as f:
contents = f.read()
print(contents)
print(contents.rstrip())
运行1.py结果如下:
3.14345345345
23426534534
45345123656
3.14345345345
23426534534
45345123656
显然第一个末尾多一个空行,第二次和原文档一样。
2.readlines(),是把一个文档的每一行(包含行前的空格,行末加一个\n),作为列表的一个元素,存储在一个list中。每一个行作为list的一个元素。
注意:readlines()和原文档相比,每行之后都多出一个空行,因为原来每行末尾都加了'\n',要想和原文档输出一样,那么每个行末尾加上rstrip()即可消除右边空格,左边空格不变。
3.readline(),类似于readlines(),不过它每次只读取文档的一行。以后需要逐步循环(一般用whicl循环),最后遍历整个文件。
注意:输出情况同readlines()
4.直接使用open() 返回的对象,例如:
file_name = 'pi_digits.txt'
f1 = open(file_name)
#这里f1在原来的每行末尾都放置了一个'\n',print本身也会加一个'\n',所以每行输出后多两个'\n',
#两次换行的结果是行和行之间夹着一个空行
for line in f1:
print(line)
输出如下:
3.14345345345
23426534534
45345123656
注意:直接使用open()返回对象,并且把这个对象逐行读取后和readlines()后逐行读取是一样的。
open()会把原来的文档对象保存到一个变量中。且在原来的每行末尾加一个看不见的'\n',我们姑且当成是直接打包一个文件(每行多加一个'\n')。逐行读取的时候和readlines()是一样的。但是readlines()会把一个文件以行为单位放在一个list中,但是
open()结果是把一个文档整体打包。但是open()返回对象和readlines()还有一个区别,readlines()返回的对象可以在with代码块之外使用,但是open()返回的对象只能在with代码块内使用。
file_name = 'pi_digits.txt'
with open(file_name) as f1:
#下面的for代码块使用了f1,必须有缩进,因为使用f1只能在with代码块内使用
for line in f1:
print(line)
with open(file_name) as f2:
lines = f2.readlines()
#下面的for语句可以有缩进也可以没有缩进,有缩进就意味着在with代码块内,没有缩进意味着在with代码块外
#使用,这两种都是可以的,所以相对而言,readlines()返回对象有更大的自由度
for line in lines:
print(line.rstrip())
~
注意:readlines()返回对象可以在with代码块外使用,但是open()返回对象只能在with代码块内使用
更多推荐
所有评论(0)