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:文件读写操作的主要内容,如果未能解决你的问题,请参考以下文章