文件操作
文件的基本操作
打开文件
path = 'test.txt'
path = r'/home/pyvip/py_case/test.txt'
file = open(path, 'w+')
t | 文本模式 (默认) |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
写入文件
# 一次性写入
file.write('Python')
# 按行写入
file.writelines([‘1’, ‘2’, ‘3’])
读取文件
# 一次性读取完
file.read()
# 按行读取
file.readline()
file.readlines()
查看
file.tell()
文件指针
file.tell()
关闭
file.close()
上下文管理器
with open as f:
# 各种操作
这种方法不需要
close
。
结构化文件
# 1.创建IO
import io
sio = io.StringIO()
# 2.写入内容
sio.write(str(i))
# 3.读取内容
sio.getvalue()
StringIO
在内存中如同打开文件一样操作字符串,因此也有很多文件的方法。当创建的
StringIO
调用close()
方法时,在内存中的数据会被丢失
非结构化文件
# 1.创建IO
import io
sio = io.BytesIO()
# 2.写入内容
sio.write(b'abc')
# 3.读取内容
sio.getvalue()
BytesIO
和StringIO
类似,但是BytesIO
操作的是Byte
数据
常用的系统工具
os
操作系统交互
import os
# 可以直接调用系统命令
os.system('ifconfig')
# 操作路径
os.path()
os.path.join(r'/home/chancey/', r'data') # 路径拼接
# 操作文件目录
os.mkdir('demo') # 创建目录
os.rename('demo', 'test') # 重命名
os
提供了PYTHON
和操作系统的交互方式,只要是和操作系统相关,就可以在os
模块中找方法。更多方法传送门
shutil
高级文件操作
import shutil
# 移动文件
shutil.move
# 复制文件夹
shutil.copytree
# 删除文件夹
shutil.rmtree
shutil
模块提供了许多关于文件和文件集合的高级操作。更多方法传送门