文件和os、shutil模块
- 1. 文件
- 1.1 打开文件
- 1.2 写入文件
- 1.3 读取文件内容
- 1.4 关闭文件
- 1.5 异常处理
- 2. os模块
- 2.1 获取当前工作目录
- 2. 创建目录
- 2.3 重命名文件或目录
- 2.4 删除文件
- 2.5 执行系统命令
- 3. shutil模块
- 3.1 复制文件
- 3.2 移动文件
- 3.3 复制目录(包括子目录和文件)
- 3.4 删除目录(包括子目录和文件)
- 3.5 归档压缩文件
- 3.6 解压缩文件
1. 文件
在Python中,对文件进行操作通常涉及文件的打开、读取、写入和关闭等基本操作
1.1 打开文件
open()
函数用于打开文件,并返回一个文件对象,可以进行后续的读取和写入操作。
下面是 open()
函数的详细语法和示例:
语法:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
file
:要打开的文件名或文件路径。mode
:打开文件的模式,默认为'r'
,表示以只读方式打开文件。常见的模式有:'r'
:只读模式'w'
:写入模式,会先清空文件内容'a'
:追加模式,在文件末尾追加内容'x'
:独占写入模式,只能创建新文件,如果文件已存在则会抛出异常
buffering
:缓冲设置,默认为-1
,使用系统默认的缓冲区大小。encoding
:指定文件的编码方式,常用的编码方式有'utf-8'
、'gbk'
等。errors
:指定编码错误的处理方式。newline
:用于控制文件的换行符处理。closefd
:设置为False
时,将不会关闭底层文件描述符。opener
:用于自定义开启文件的方法。
示例一:以只读模式打开文件,并读取文件内容。
file = open("example.txt", "r")
content = file.read()
print(content)
file.close()
示例二:以写入模式打开文件,并写入内容。
file = open("output.txt", "w")
file.write("Hello, world!")
file.close()
示例三:以追加模式打开文件,并在文件末尾追加内容。
file = open("output.txt", "a")
file.write("Hello again!")
file.close()
示例四: with
语句关闭文件
为了确保文件正确关闭,也可以使用 with
语句来自动管理文件的打开和关闭。
with open("example.txt", "r") as file:
content = file.read()
print(content)
# 文件会在代码块结束后自动关闭,无需调用 close() 方法
操作:创建一个file.txt的文件
open('file.txt', mode='w',encoding='utf-8')
执行上述语句,在执行文件的同级目录下生成了file.txt文件
1.2 写入文件
写入函数:
- write(str):将字符串写入文件,返回写入字符长度
- writelines(s):向文件写入一个字符串列表
使用文件对象的write()
方法可以向文件中写入内容。
示例:
file = open("output.txt", "w")
file.write("Hello, world!") # 写入内容到文件
file.writelines(["Hello, world!","Hello, test!"]) # 写入内容到文件
file.close()
操作:将一篇古诗词写入file.txt的文件中
with open('file.txt', mode='w',encoding='utf-8') as wf:
wf.write("不第后赋菊\n")
wf.writelines(["待到秋来九月八,\n","我花开后百花杀。\n",
"冲天香阵透长安,\n","满城尽带黄金甲。\n"])
wf.write(" --黄巢\n")
1.3 读取文件内容
示例一:一次性读取整个文件内容
with open("file.txt", "r", encoding='utf-8') as wf:
content = wf.read() # 读取整个文件内容
print(content)
示例二:逐行读取文件内容
with open("file.txt", "r", encoding='utf-8') as wf:
for line in wf:
print(line)
示例三:读取指定字节数
file = open("example.txt", "r")
content = file.read(10) # 读取10个字节
print(content)
file.close()
1.4 关闭文件
在打开文件后,务必记得使用 close()
方法关闭文件,以释放资源
示例:
file = open("example.txt", "r")
# 读取文件内容
file.close() # 关闭文件
为了确保文件正确关闭,也可以使用 with
语句来自动管理文件的打开和关闭。
示例:使用 with
语句打开文件。
with open("example.txt", "r") as file:
content = file.read()
print(content)
# 文件会在代码块结束后自动关闭,无需调用 close() 方法
1.5 异常处理
在进行文件操作时,最好使用异常处理来处理可能的错误情况,以确保文件正确关闭
示例:
try:
file = open("example.txt", "r")
# 进行文件操作
except FileNotFoundError:
print("文件不存在")
finally:
file.close()
2. os模块
os
模块提供了许多与操作系统交互的函数,包括文件和目录操作、进程管理、环境变量等。
2.1 获取当前工作目录
import os
current_dir = os.getcwd()
print("当前工作目录:", current_dir)
2. 创建目录
import os
os.mkdir("新目录")
2.3 重命名文件或目录
import os
os.rename("旧文件.txt", "新文件.txt")
2.4 删除文件
import os
os.remove("要删除的文件.txt")
2.5 执行系统命令
import os
os.system("ls -l")
3. shutil模块
shutil
模块提供了一些高级的文件操作
函数,包括复制、移动和删除文件等。
3.1 复制文件
import shutil
shutil.copy("源文件.txt", "目标文件夹/")
3.2 移动文件
import shutil
shutil.move("要移动的文件.txt", "目标文件夹/")
3.3 复制目录(包括子目录和文件)
import shutil
shutil.copytree("新目录","新目录1")
3.4 删除目录(包括子目录和文件)
import shutil
shutil.rmtree("要删除的目录/")
3.5 归档压缩文件
import shutil
shutil.make_archive("归档文件", "zip", "要压缩的文件夹/")
3.6 解压缩文件
import shutil
shutil.unpack_archive("压缩文件.zip", "解压目标文件夹/")
以上示例展示了os
模块和shutil
模块的一些常见用法。这些模块提供了许多其他功能,如遍历目录、修改权限、获取文件信息等。
官方文档:os模块文档 和 shutil模块文档