内容预备知识:打开文件
本文的打印结,果基于文本文件DataFile.txt:
朝辞白帝彩云间,
千里江陵一日还。
两岸猿声啼不住,
轻舟已过万重山。
读取文件的三种操作方法
- read:返回全部文件内容【一次性全读完,工作量巨大,不适用于大文件】
- readline:返回一行文件内容的字符串【搭配while语句,一行一行读取】
- readlines:返回全部文件内容组成的列表格式【搭配for语句,才可以逐行输出】
1、read
- 一次性读取全部指定内容【不适用于大文件】
- 读取停止在结尾【第二次读取的输出为空】
f=open("D:\\DataFile.txt",encoding='utf-8') print(f.read()) "运行之后显示全部打印内容" print(f.read()) "会读空字符串,并打印。上一行代码已经读完了诗,因此再运行是从诗词结尾继续运行,即没有输出"
Outcome:
朝辞白帝彩云间, 千里江陵一日还。 两岸猿声啼不住, 轻舟已过万重山。
如果指定每次的阅读量为10个字节:
print(f.read(10)) "读第 1-10 个字节" print(f.read(10)) "读第 11-20 个字节"
输出结果为:
【Python3版本:汉字对应1字节,标点符号对应1字节,完整的转译符(在这里是换行)对应1字节】
朝辞白帝彩云间, 千 里江陵一日还。 两岸
2、readline
- 一行一行读取,每行的换行符也会被读取
-
f=open("D:\\DataFile.txt",encoding='utf-8') print(f.readline()) "读第一行" print(f.readline()) "读第二行" f.close() "输出结果为:" 朝辞白帝彩云间, 千里江陵一日还。
-
- 通常搭配while语句,可以读到文档结尾
-
"搭配while语句,用readline读完" f=open("D:\\DataFile.txt",encoding='utf-8') line=f.readline() "读第一行" while line != "": print(line) line=f.readline() f.close()
-
一个小细节:f.readline不管出现在什么位置,程序都会执行一次"阅读行"的命令
如果在while 中 print(f.readline()) 而不是print(line):
"搭配while语句,用readline读完" f=open("D:\\DataFile.txt",encoding='utf-8') line=f.readline() "读第一行" while line != "": print(f.readline()) "这里打印的时候,打印的是第二行" "第二次循环时,打印的是第四行" line=f.readline() "line=第三行,因为line不是空字符串,所以再循环一次"
3、realines
- 打印结果以列表的形式输出:
-
with open("D:\\DataFile.txt",encoding='utf-8') as f: print(f.readlines())
- 输出结果:换行符\n 也被打印出来了
['朝辞白帝彩云间,\n', '千里江陵一日还。\n', '两岸猿声啼不住,\n', '轻舟已过万重山。']
- 输出结果:换行符\n 也被打印出来了
-
- 如果想要逐行打印,可以搭配for 语句
-
输出结果:with open("D:\\DataFile.txt",encoding='utf-8') as f: lines=f.readlines() for line in lines: print(line)
-
朝辞白帝彩云间, 千里江陵一日还。 两岸猿声啼不住, 轻舟已过万重山。
-
-