分别用这三个函数读取 myfile.txt 。 myfile.txt 中的内容是拜伦的《她以绝美之姿行来》(节选):
她以绝美之姿行来,犹如夜晚
晴空无云,繁星灿烂;
那最绝妙的光明与黑暗,
均汇聚于她的丰姿与眼底,
交织成如许温柔光辉,
是浓艳的白昼所无缘得见。
read()
with open('myfile.txt','r') as f:
poem = f.read()
print(poem,'\n',type(poem))
打印结果:
她以绝美之姿行来,犹如夜晚 晴空无云,繁星灿烂; 那最绝妙的光明与黑暗, 均汇聚于她的丰姿与眼底, 交织成如许温柔光辉, 是浓艳的白昼所无缘得见。
<class 'str'>
read() 函数不指定参数的话,会将文件一次性读完,并返回一个 str ;
如果指定参数如 read(5) 则只会读取前 5 个字符,并返回一个 str,在读取大文件时一般都要指定参数进行分次读取。
readline()
with open('myfile.txt','r') as f:
poem = f.readline()
print(poem,'\n',type(poem))
打印结果:
她以绝美之姿行来,犹如夜晚
<class 'str'>
用法:readline()不指定参数的话一次读取一行(即遇到换行符就停止读取),返回一个 str 。
指定参数如 readline(5) 的话就读取前5个字符。但与 read(5) 不同的是,如果前 5 个字符中有换行符,它只会读取换行符前的字符(也就是只读取一行)。
readlines()
with open('myfile.txt','r') as f:
poem = f.readlines()
print(poem,'\n',type(poem))
打印结果:
['她以绝美之姿行来,犹如夜晚 \n', '晴空无云,繁星灿烂; \n', '那最绝妙的光明与黑暗, \n', '均汇聚于她的丰姿与眼底, \n', '交织成如许温柔光辉, \n', '是浓艳的白昼所无缘得见。']
<class 'list'>
用法:readlines()不指定参数的话会一次地将文件读完,并返回一个列表。列表的第一个元素是文件的第一行,第二个元素是第二行……
readlines()若指定参数如 readlines(5) ,并不是读取 5 行.....如下所示
readlines(5)
打印结果:
['她以绝美之姿行来,犹如夜晚 \n']
这里的 5 是字符数量。当读取的字符数量大于 5 时就停止读取,否则继续读取下一行。这里第一行的字符数量超过了 5 个,就停止读取了。
总结:
在读取大文件时,使用 read(size) 逐次读取 。
在读取存储 url 的文件时,使用 readlines() 刚好可以生成一个列表,方便处理。