Python基础语法(17)文件操作
Python基础语法(17)文件操作
学习目标
- 文件操作的作用
- 文件的基本操作
- 打开
- 读写
- 关闭
- 文件备份程序
- 文件和文件夹的操作
- 批量修改文件名案例
文件操作的作用
什么是文件?文档、视频、音乐……都叫文件,文件操作包含:打开、关闭、读、写、复制……,文件操作的作用是为了文件可以读取内容,写入内容或者备份内容……等。
总结:文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。
文件的基本操作
文件操作步骤是:1.打开文件,2.读写操作,3.关闭文件,也可也只打开关闭不作读写操作。
打开
在Python中可以使用open函数,可以打开一个已经存在的文件,或者创建一个新的文件,语法如下:
|
|
name:指的是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读,写入,追加。
在使用前需要添加一个open函数的文件对象。
模式 | 描述 |
---|---|
r | 以只读方式打开文件,文件的指针将会放在文件的开头,这里默认模式。 |
rb | 以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头,这是默认模式。 |
r+ | 打开一个文件用于读写,文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是说,新的内容将会被写入已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加,如果该文件存在,文件指针将会放在文件结尾,也就是说新的内容会被写入已有内容之后。如果文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写,如果文件已存在,文件指针将会放在文件的结尾,文件打开时会是追加模式,如果文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加,如果该文件已存在,文件指针会放在文件的结尾,如果该文件不存在,创建新文件用于读写。 |
⚠️注意:
- 如果文件不存在,r模式是报错的,w和a模式会新建文件;
- r模式下无法调用write函数,a和w模式可以调用write函数;
- w模式在写入时会覆盖掉原有内容,a模式写入时追加内容;
- 访问模式省略后默认为r模式。
实验:
|
|
读写
读取文件内容的函数为read()
、readlines()
、readline()
三种:
- read( )
|
|
在r模式下调用,num表示要从文件中的读取的数据长度,单位是字节,如果没有传入num参数,那么表示读取文件的所有内容。
- readlines( )
readlines可以按照行的方式把整个文件中的内容进行一次性的读取,并且返回一个列表,其中每一行数据为一个元素。
|
|
- readline( )
readline可以一次读取一行内容。
|
|
写文件内容的函数为write()
、writelines()
两种,这两种方式在访问模式在**除了r、rb两种访问模式之外的模式(可读写模式)**中使用。
- write( )
write函数中会传入待写入文件的字符串,参数必须为字符串类型。
|
|
- writelines( )
writelines函数中会传入待写入文件的字符串或者是数据序列(所有元素均为字符串)。
|
|
seek( )函数
用来移动文件指针,确定读取或写入的位置,语法如下:
|
|
对于起始位置参数的定义:0是文件的开头,1是当前的位置, 2是文件的结尾。
|
|
关闭
调用close( )函数可以进行文件的关闭,断开当前链接。
文件备份程序
文件备份是将文件进行复制,在复制后的文件进行修改删除时不影响原文件的内容,保护了原文件,即保护了数据,为了防止原数据被篡改,文件备份是很重要的操作。
步骤
- 接受用户输入的文件名
- 规划备份文件名
- 备份文件写入数据
代码实现
|
|
文件和文件夹的操作
在Python文件的和文件夹的操作要借助os模块里的相关工能,具体步骤是先import
导入os模块,然后调用函数。
-
文件:
- rename(旧文件名, 新文件名)改名
1 2
import os os.rename('1.txt','2.txt') # 第一个参数可以带路径
- remove(目标文件名)删除
1 2
import os os.remove('1.txt') # 参数可以带路径
-
文件夹
- mkdir(创建文件夹的名字)
1 2
import os os.mkdir('aa') # 参数可以带路径
- rmdir(待删除文件夹的名字)
1 2
import os os.rmdir('aa') # 参数可以带路径
- getcwd( ) 获取路径以字符串形式返回
1 2
import os print(os.getcwd())
- chdir(目录)改变目录路径
1 2 3 4
import os os.mkdir('aa') # 创建aa文件夹 os.chdir('./aa') # 进入aa文件夹 os.mkdir('bb') # 创建bb文件夹
- listdir(目录) 列出路径下的所有文件以列表形式返回,参数可有可无
1 2
import os print(os.listdir('..')) # 列出上一级目录的所有文件
- rename(旧文件夹名, 新文件夹名)
1 2
import os print(os.rename('a','new_a'))
应用案例
需求:批量修改文件名,既可以添加指定字符串,又能删除指定字符串。
步骤
- 设置添加删除字符串的标识
- 获取指定目录的所有文件
- 将原有文件名添加/删除指定字符串,构造新名字
- 重命名
代码实现
|
|
总结
-
文件操作:
-
打开
open(目标文件,访问模式)
-
读
read(num)
、readlines()
读取返回行列表、readline()
读取行 -
写
write('str')
、writelines()
写入数据序列或字符串 -
seek(偏移量, 初始位置)
移动文件指针。 -
os.rename('原名称','现在名称')
改文件名字 -
os.remove('目标')
删除文件
-
-
文件夹操作:
os.mkdir(创建文件夹的名字)
创建文件夹os.rmdir(待删除文件夹的名字)
删除文件夹os.getcwd( )
获取路径以字符串形式返回os.chdir(目录)
改变目录路径os.listdir(目录)
返回当前目录所有文件列表os.rename(旧文件夹名, 新文件夹名)
替换文件夹名称
-
访问模式:
-
r模式以只读方式打开,指针位置在开头,文件不存在则报错,
-
rb模式以只读二进制方式打开,指针位置在开头,文件不存在则报错。
-
r+模式以读写方式打开,指针位置在开头,文件不存在则报错。
-
rb+模式以读写二进制方式打开,指针位置在开头,文件不存在则报错。
-
w模式以写方式打开,指针位置在开头,文件不存在则新建,原内容默认替换。
-
wb模式以二进制写方式打开,指针位置在开头,文件不存在则新建,原文件默认替换。
-
w+模式以读写方式打开,指针位置在开头,文件不存在则新建,原内容默认替换。
-
wb+模式以二进制读写方式打开,指针位置在开头,文件不存在则新建,原内容默认替换。
-
a模式以追加方式打开,指针位置在结尾,文件不存在则新建,原内容默认存在。
-
ab模式以二进制追加方式打开,指针位置在结尾,文件不存在则新建,原内容默认存在。
-
a+模式以读写方式打开,指针位置在结尾,文件不存在则新建,原内容默认存在。
-
ab+模式以二进制读写方式打开,指针位置在结尾,文件不存在则新建,原内容默认存在。
-