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

Posted howard2005

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python编程基础13:文件读写操作相关的知识,希望对你有一定的参考价值。

一、文件概念

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

二、打开文件与关闭文件

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

1、函数作用

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

2、函数调用格式

  • myfile = open(filename [, mode])
  • 参数1 - filename 文件名字符串
  • 参数2 - mode 文件读写模式

(二)文件关闭函数 - close()

1、函数作用

close()方法用于关闭文件。通常,Python会使用内存缓冲区缓存文件数据。关闭文件时,Python可将缓冲的数据写入文件,然后关闭文件,释放对文件的引用。当然,Python可自动关闭未使用的文件。

2、函数调用格式

  • myfile.close()

(三)文件刷新函数 - flush()

1、函数作用

flush()方法可将缓冲区内容写入文件,但不关闭文件。

2、函数调用格式

  • myfile.flush()

(四) 案例演示

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

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

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

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

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

  • 以追加方式打开“love.txt”(打开之前先关闭)
  • 查看追加数据之后的文件内容

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


三、文件读写函数

  • 显示文件 - test.txt

(一)读取整个文件内容 - myfile.read()

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

(二)读取文件前n个字符 - myfile.read(n)

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

(三)读取文件一行内容 - myfile.readline()

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

(四)行读取全部文件 - myfile.readlines()

  • 把整个文件内容读入一个字符串列表,每一行为一个字符串

(五)写入字符串到文件 - myfile.write(xstring)

  • 将字符串写入到文件指针位置,返回写入的字符个数
  • 读取整个文件内容

(六)写入字符串列表到文件 - myfile.writelines(xlist)

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

以上是关于Python编程基础13:文件读写操作的主要内容,如果未能解决你的问题,请参考以下文章

Python基础笔记系列十一:标准输入输出文件读写和指针等操作

C++编程基础: 14. 文件的读写

Python 文件读写操作-Python零基础入门教程

python基础操作_文件读写操作

Python3 IO编程之文件读写

Python基础文件读写操作