文件操作文件读写
- 语法:open(file, mode, encoding)
- 参数:file —— 文件所在位置(相对路径、绝对路径) mode —— 操作文件的模式 encoding —— 文件的编码格式
- 相对路径:基于目前的路径获取
- 绝对路径:一个完整的路径
- 操作文件的模式:r-读 w-写 a-追加
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
- 常用编码格式:utf-8 gbk gb2312
读写操作方法
模式 | 介绍 |
---|---|
read(s) | 不填写s就读取所有文件内容,填写读取指定长度数据 |
write() | 写入字符串或进制文件 |
writelines() | 写入以列表保存的字符串或进制文件 |
readline() | 以行读取数据 |
readlines() | 读取所有数据存放列表 |
只写模式w
- **f.writable()** –>判断是否可写
- **f.write(str)** –> 写入内容,返回值为写入字符串的长度
- **f.writelines(seq)** –> 写入多行,但需要自己添加换行符
注意:
- w模式,当文件不存在时创建文件
- 再次写入会覆盖
f = open('filetest.txt', mode='w', encoding='utf-8')# 判断是否可写print(f.writable())# 写入内容f.write('i am yueyue\nasdasda\n')# 写入多行f.writelines('I love You\nasdasdasdsad')# 关闭文件f.close()
追加模式a
注意:
- a模式,当文件不存在时创建文件
- 再次写入为追加
f = open('filetest.txt', mode='a', encoding='utf-8')# 判断是否可写print(f.writable())# 写入内容f.write('i am yueyue\nasdasda\n')# 写入多行f.writelines('I love You\nasdasdasdsad')# # 关闭文件f.close()
w 和 a 模式:如果文件不存在则创建该文件;如果文件存在,w 模式先清空再写入,a 模式直接末尾追加。
只读模式r
- f.readable() –> 判断是否可读,返回值为布尔
- f.read(n) –>读取全部,在python3中n为字符
- f.readline() –>逐行读取,包括\n
- f.readlines() –>读取所有,返回值为列表,包括\n
- **f.tell() **–> 文件指针所处文件位置
- **seek() –> **作用:用来移动文件指针
f = open('filetest.txt', mode='r', encoding='utf-8')# 判断是否可读print(f.readable())# 逐行读取print(f.readline(),end='')# 读取所有 返回值为列表print(f.readlines())# # 读取文件全部内容print(f.read())
1)tell的使用
f = open("filetest.txt", mode="r", encoding="utf-8")'''filetest2.txthelloworld你好'''# 汉字代表三个字节 换行代表两个字节 字母数字代表的是一个字节print(f.tell())print(f.readline(), end="")print(f.tell())print(f.readline())print(f.tell())
2)seek的使用
f = open("filetest.txt", mode="rb")'''filetest2.txthelloworld你好'''# 改变指针位置"""offset: 偏移量whence: 0 从文件头开始 1 当前位置开始 2 文件尾注意,当offset值非0时,Python要求文件必须要以二进制格式打开,否则会抛出 io.UnsupportedOperation 错误。"""print(f.tell())# 读取一个字节,文件指针自动后移1个数据print(f.read(1))print(f.tell())# 将文件指针从文件开头,向后移动到 5 个字符的位置f.seek(5)print(f.tell())print(f.read(1))# 将文件指针从当前位置,向后移动到 5 个字符的位置f.seek(5, 1)print(f.tell())print(f.read(1))# 将文件指针从文件结尾,向前移动到距离1个字符的位置f.seek(-1, 2)print(f.tell())print(f.read(1))
文件备份
需求:用户输入当前目录下任意文件名,程序完成对该文件的备份功能(备份文件名为xx备份后缀,例如:test备份.txt)
- 接收用户输入的文件名
- 规划备份文件名
- 备份文件写入数据
代码实现
A、接收用户户输入目标文件名
1、提取目标文件后缀
2、组织备份的文件名,xx备份.后缀
old_name = input("请输入文件名:")index = old_name.rfind(".") # rfind()函数从右开始找元素所在索引位置new_name = old_name[:index]+"备份"+old_name[index:]
B、备份文件写入数据
1、打开源文件 和 备份文件
2、将源文件数据写⼊备份文件
3、关闭文件
old_name = input("请输入文件名:")index = old_name.rfind(".")new_name = old_name[:index]+"备份"+old_name[index:]# 老文件old_f = open(old_name,"r")# 新文件new_f = open(new_name,"w")cont = old_f.readlines()print(cont)new_f.writelines(cont)old_f.close()new_f.close()
文件夹操作
模块.函数 | 介绍 |
---|---|
os.rename() | 重命名文件或者文件夹 |
os.remove() | 删除文件 |
os.mkdir() | 创建文件夹 |
os.makedirs() | 以递归方式创建多个文件夹 |
os.rmdir() | 删除文件夹(空文件夹) |
os.removedirs() | 以递归方式删除多个空文件夹 |
os.getcwd() | 获取当前路径 |
os.chdir() | 改变默认⽬录 |
os.listdir() | 获取文件中的文件 |
os.path.exists() | 判断该路径下的文件或文件夹是否存在 |
os.path.join() | 拼接路径 |
shutil.copy() | 复制文件 |
shutil.rmtree() | 把文件和内容全部删除 |
批量重命名
文件夹添加字符串
import os# 先切换路径 os.chdir('testsad')print(os.getcwd())# 遍历此路径下的文件file_list = os.listdir(os.getcwd())print(file_list)for file in file_list: # 循环拼接 new_name = "python_" + file # print(new_name) os.rename(file,new_name)
本文来自博客园,作者:大-锅,转载请注明原文链接:https://www.cnblogs.com/daguo118/p/17316006.html