Python编程基础13:文件读写操作

举报
howard2005 发表于 2021/12/17 00:50:02 2021/12/17
【摘要】 文章目录 一、文件概念二、打开文件(一)文件打开函数 - open()1、函数作用2、函数调用格式3、案例演示(1)以默认方式(r - 只读)打开文件(2)以只写方式(w - 只写)打开文件(3)...

一、文件概念

  • 文件是操作系统管理和存储数据的一种方式。Python使用内置的文件对象来处理文件。
  • 在D:/python_work目录里创建lesson13目录,在该目录下创建一个文本文件 - test.txt
    在这里插入图片描述

二、打开文件

(一)文件打开函数 - open()

1、函数作用

  • open()函数用于打开文件,返回一个文件对象
  • 打开文件后,Python用一个文件指针指示当前读取位置。以a或w方式打开文件时,文件指针指向文件末尾;以r方式打开文件打开文件,文件指针指向文件开头。

2、函数调用格式

  • myfile = open(filename [, mode])
  • 参数1 - filename 文件名字符串
  • 参数2 - mode 文件读写模式
    在这里插入图片描述

3、案例演示

(1)以默认方式(r - 只读)打开文件

  • 打开d:\python_work\lesson13\test.txt
    在这里插入图片描述
  • 查看文件内容
    在这里插入图片描述
  • 关闭文件
    在这里插入图片描述
  • 删除文件变量
    在这里插入图片描述
  • 说明:以r方式打开文件,文件指针指向文件头(第一行)
    在这里插入图片描述

(2)以只写方式(w - 只写)打开文件

  • 以只写方式打开‘love.txt’文件
    在这里插入图片描述
  • 查看love.txt文件文件,却发现空空如也
    在这里插入图片描述
  • 调用文件的flush()方法,将缓冲区的数据写入到指定文件
    在这里插入图片描述
  • 查看文件,发现数据已写入
    在这里插入图片描述

(3)以追加方式(a - 追加)打开文件

  • 以追加方式打开“love.txt”(打开之前先关闭)
    在这里插入图片描述
  • 查看追加数据之后的文件内容
    在这里插入图片描述

(4)以可写可读方式(w+)打开文件

在这里插入图片描述
在这里插入图片描述

(二)文件读写函数

  • 显示文件 - test.txt
    在这里插入图片描述

1、myfile.read()

  • 把整个文件内容读入一个字符串
    在这里插入图片描述
  • 问题:怎么知道一个文件的长度?
    在这里插入图片描述
  • 为什么是42?因为第一行和第二行末尾都有一个换行符('\n'
  • 当调用一次read()函数,文件指针就指向文件尾,此时读取不到任何内容。
    在这里插入图片描述
  • 如果希望再次读取全部内容,可以将文件指针移到文件头,使用seek(0)即可
    在这里插入图片描述

2、myfile.read(n)

  • 把n个字符串读入一个字符串(问题:n能否超过文件的长度?)
  • 第一行有13个可见字符(还有一个换行符),读取第一行的可见字符
    在这里插入图片描述
  • 要读第二行
    在这里插入图片描述
  • 由于第一行的换行符没有读取,导致第二行的十四个可见字符没有完整读取出来
    在这里插入图片描述
  • 读取第三行
    在这里插入图片描述
  • 重新定位到文件头,读取100个字符,看结果如何
    在这里插入图片描述

3、myfile.readline()

  • 读一行,包含行尾符号(文本文件换行符为“\n”,二进制文件换行符是“\r\n”)
    在这里插入图片描述
  • 读完三行之后,我们知道文件已经读完了,如果继续调用readline(),会出现错误吗?
    在这里插入图片描述
  • 结果是返回空字符串
  • 可以利用while循环和readline()读取全部行
    在这里插入图片描述
  • 这个程序有一个隐藏的bug,当文件只有一行时,没有任何输出内容,怎么解决这个问题?

4、myfile.readlines()

  • 把整个文件内容读入一个字符串列表,每一行为一个字符串
    在这里插入图片描述

5、myfile.write(xstring)

  • 将字符串写入到文件指针位置,返回写入的字符个数
    在这里插入图片描述
  • 读取整个文件内容
    在这里插入图片描述

6、myfile.writelines(xlist)

  • 将列表写入文件指针位置,返回写入的字符个数
    在这里插入图片描述
  • 任务:在第一行和第二行之间插入三行新内容
  • 分析:第一行有13个可见字符加一个换行符,指针应该定位到第二行开头,seek(15)。
    在这里插入图片描述
  • 运行结果不正确,不是插入,还是追加,这个问题怎么解决呢?
  • 恢复文件test.xt内容
    在这里插入图片描述
  • 以r+模式打开文件,再来尝试,结果接近一点目标,但还是没有彻底解决问题
    在这里插入图片描述

文章来源: howard2005.blog.csdn.net,作者:howard2005,版权归原作者所有,如需转载,请联系作者。

原文链接:howard2005.blog.csdn.net/article/details/121979210

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。