Python入门:读文件【read\readline\readlines】

本文详细介绍了Python中读取文件的三种方法:一次性读取(read)、按行读取(readline)和逐行列表读取(readlines),以及它们在处理不同规模文件和输出格式上的适用性。
摘要由CSDN通过智能技术生成

内容预备知识:打开文件


本文的打印结,果基于文本文件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', '轻舟已过万重山。']
  • 如果想要逐行打印,可以搭配for 语句
    • with open("D:\\DataFile.txt",encoding='utf-8') as f:
          lines=f.readlines()
          for line in lines:
              print(line)
      输出结果:
      • 朝辞白帝彩云间,
        
        千里江陵一日还。
        
        两岸猿声啼不住,
        
        轻舟已过万重山。
        
        

 

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值