Python之文件的读写

文章目录

  • 前言

  • 一、打开和关闭文件(open和close)

    • 1.打开文件

    • 2.关闭文件

    • mode的方式

    • 几种读取文件的函数

    • 写入文件的函数

  • 二、with…open…as操作文件

    • 1、with…open…as与open......close的区别

  • 总结


前言

本篇文章讲解,平时读写文件的基本用法


一、打开和关闭文件(open和close)

语法:
open(file, mode, encoding=None)

讲解字段含义:

file:文件(其实是一个具体文件的路径)

例如:

在D盘我创建了一个名为:qhj.txt的文件,那么file就应该是:D:\study\qhj.txt

Python之文件的读写_第1张图片

mode:打开文件的方式(以什么样的方式打开这个文件)

encoding:编码(以什么样的方式来编码)

1.打开文

 字段讲解:

r"D:\study\qhj.txt" :也就是file

"r" :也就是mode

encoding="utf-8" :也就是encoding=None,只不过这个传了具体值"utf-8",所以不再是默认的None

注意:其实上面这种方式是一种省略的方式写法,可能对于初学者有点疑惑,为什么r"D:\study\qhj.txt"的前面,"r"的前面没有一个参数,而"utf-8"前面就有encoding呢?

其实我们还原最基本的(标准的)写法就明白了。

2.关闭文件

语法:file.close() #注意:这里的file是一个对象,使用对象调出函数,来操作关闭。

举例:

Python之文件的读写_第2张图片


mode的方式:

以读为主

r

以只读方式打开文件。指针将会放在文件的开头(这是默认模式);

read  只能读不能写,文件不存在的时候会报错

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

读写模式  文件不存在的时候会报错   可读可写,但是写的有问题(在最前方写,因为指针在0处)

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。



以写为主

w

打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。(也就是写入的内容把原有的内容的覆盖了);

write 文件不存在的话,给创建,不能读,写之前会清空原来的文件内容

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

w+

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件;

写读模式   文件不存在的时候给创建  清空文件内容,然后在写

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

以追加为主

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

追加模式  不会清空原来的内容 追加写,但是不能读

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

追加模式   文件不存在的时候给创建  可读可写  ,追加写,但是读不到内容(因为指针在末尾,所以读不到)

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

注意:这些字母可能有些不好记,那么可以还原成英语单词来记忆:

r 的单词意思是:read  

w 的单词意思是:write

a 的单词意思是:append

b 的单词意思是:binary(二进制)


几种读取文章的函数:

readlines() :读取所有行,以列表的形式返回读取内容,列表的每一个元素对应文件的一行

readline():按行读取文件的内容,换行符号 ‘\n’

read([size]):默认读取全部文件内容,如果有size参数,则读取前size个字节数

举例:

Python之文件的读写_第3张图片

(1)读取文件的全部数据

Python之文件的读写_第4张图片

(2)只读取单行的数据

Python之文件的读写_第5张图片

(3)如果我们要读取几行数据,那么就要多调几次readline()函数

Python之文件的读写_第6张图片

 (4)按照每一行读取(默认放入列表中)

Python之文件的读写_第7张图片

(5)读取前4个字符

Python之文件的读写_第8张图片


 写入文件的函数:

write("写入文件的内容")

(1)j.txt为新建的空文件

Python之文件的读写_第9张图片

(2)j.txt不为空文件时。(这个时候的写入就要把里面的原来有的数据覆盖----相当于清空之前的数据)

Python之文件的读写_第10张图片

(3)以追加的方式写入。

当原来的文件里面没有数据的时候(相当于一般的写入):

Python之文件的读写_第11张图片

当原来的文件里面有数据的时候(追加的写入):

 Python之文件的读写_第12张图片

二、with…open…as操作文件

1、with…open…as与open......close的区别: 

1)open......close 这种结构,在打开文件后,经过数据的一系列操作后,需要调函数close()来关闭文件

2)with…open…as 不需要调close()函数来关闭文件

语法:

with  open(file,mode,encoding) as file:

        这里面是要操作的东西

另外一个区别:

open......close:这是因为文件操作是一个I/O操作,当我们写文件时,操作系统往往不会立即把数据写入到磁盘,而是先放到内存缓存起来,等空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘同时释放资源。如果不这样做的话,可能造成数据丢失和资源浪费。

我们知道代码的执行是从上到下按行执行,但是如果open以下close之上的代码某一行出错了呢,那是不是不能执行close()这个函数了。为了防止这个问题发生,所以就有了with…open…as。不管中间的代码是否有错,最后都会关闭文件。

举例:

Python之文件的读写_第13张图片

可以参考一位优秀的博主文章:

python中的文件读写操作open和with的用法 - 码农教程

python之文件操作(open与with...open...as)_搬砖,赞路费的博客-CSDN博客

               

总结

以上就是今天要讲的内容,本文仅仅简单介绍了open...close和with....open....as的基本使用和区别。

你可能感兴趣的:(python,pandas)