使用 open() 函数打开文件时,open file mode(文件打开模式)是一个决定了以何种方式打开文件以及对文件可以进行哪些操作的重要参数。
try:
file = open('test.txt', 'r')
content = file.read()
print(content)
file.close()
except FileNotFoundError:
print("文件未找到。")
file = open('test.txt', 'w')
file.write('这是写入的内容。')
file.close()
file = open('test.txt', 'a')
file.write('\n这是追加的内容。')
file.close()
with open('image.jpg', 'rb') as file:
data = file.read()
with open('image.jpg', 'rb') as file:
data = file.read()
file = open('test.txt', 'r+')
content = file.read()
print(content)
file.write('这是新写入的内容。')
file.close()
file = open('test.txt', 'w+')
file.write('新的内容。')
file.seek(0) # 将文件指针移到文件开头
content = file.read()
print(content)
file.close()
file = open('test.txt', 'a+')
file.write('追加的新内容。')
file.seek(0) # 将文件指针移到文件开头
content = file.read()
print(content)
file.close()
pathlib 模块为路径操作提供了面向对象的方式,而 os 模块也有一些常用的路径查询函数。
在 Python 中,pathlib
模块为路径操作提供了面向对象的方式,而 os
模块也有一些常用的路径查询函数,下面分别介绍这些操作。
cwd
)pathlib
方式:from pathlib import Path
current_dir = Path.cwd()
print(current_dir)
os
方式:import os
current_dir = os.getcwd()
print(current_dir)
is_dir
)from pathlib import Path
path = Path('your_directory_path')
if path.is_dir():
print(f"{path} 是一个目录。")
else:
print(f"{path} 不是一个目录。")
is_file
)from pathlib import Path
path = Path('your_file_path')
if path.is_file():
print(f"{path} 是一个文件。")
else:
print(f"{path} 不是一个文件。")
exists
)from pathlib import Path
path = Path('your_path')
if path.exists():
print(f"{path} 存在。")
else:
print(f"{path} 不存在。")
name
)from pathlib import Path
path = Path('your_directory/your_file.txt')
file_name = path.name
print(file_name) # 输出: your_file.txt
stem
)from pathlib import Path
path = Path('your_directory/your_file.txt')
stem = path.stem
print(stem) # 输出: your_file
parent
)from pathlib import Path
path = Path('your_directory/your_file.txt')
parent_dir = path.parent
print(parent_dir) # 输出: your_directory
parents
)from pathlib import Path
path = Path('your_directory/sub_directory/your_file.txt')
for parent in path.parents:
print(parent)
from pathlib import Path
# 获取相对路径
relative_path = Path('your_file.txt')
# 获取绝对路径
absolute_path = relative_path.resolve()
print(f"相对路径: {relative_path}")
print(f"绝对路径: {absolute_path}")
resolve
)from pathlib import Path
relative_path = Path('your_file.txt')
absolute_path = relative_path.resolve()
print(absolute_path)
iterdir
)from pathlib import Path
directory = Path('your_directory')
for item in directory.iterdir():
print(item)
创建目录(mkdir
)
from pathlib import Path
new_dir = Path('new_directory')
try:
new_dir.mkdir()
print(f"{new_dir} 目录创建成功。")
except FileExistsError:
print(f"{new_dir} 目录已存在。")
with
语句,处理文件操作时非常实用。使用 with
语句打开文件,在代码块执行完毕后,文件会自动关闭,无需手动调用 close()
方法,可以避免因忘记关闭文件而导致的资源泄漏问题。
# 使用 with 语句打开文件进行写入操作
with open('example.txt', 'w') as f:
f.write('这是要写入文件的内容。')
# 当代码执行到这里时,文件会在 with 语句块结束后自动关闭
open('example.txt', 'w')
:以写入模式打开 example.txt
文件。as f
:将打开的文件对象赋值给变量 f
,后续就可以使用 f
来操作文件。f.write('这是要写入文件的内容。')
:向文件中写入指定的内容。with
语句块执行完毕,文件会自动关闭,无需再写 f.close()
。pickle
模块是 Python 标准库中的一个工具,它可以将 Python 对象(如列表、字典、自定义类的实例等)转换为字节流(序列化),也可以将字节流重新转换回 Python 对象(反序列化)。主要使用的方法是 dump()
和 load()
。
序列化(dump()
方法)
dump()
方法用于将 Python 对象序列化并保存到文件中。
import pickle
# 定义一个 Python 对象,这里以列表为例
data = [1, 2, 3, 4, 5]
# 以二进制写入模式打开文件
with open('data.pickle', 'wb') as f:
# 使用 pickle.dump() 方法将对象序列化并保存到文件中
pickle.dump(data, f)
import pickle
:导入 pickle
模块。data = [1, 2, 3, 4, 5]
:定义一个 Python 列表对象。open('data.pickle', 'wb')
:以二进制写入模式打开 data.pickle
文件。pickle.dump(data, f)
:将 data
对象序列化并保存到文件 f
中。反序列化(load()
方法)
load()
方法用于从文件中读取字节流并将其反序列化为 Python 对象。
import pickle
# 以二进制读取模式打开文件
with open('data.pickle', 'rb') as f:
# 使用 pickle.load() 方法从文件中读取并反序列化对象
loaded_data = pickle.load(f)
print(loaded_data) # 输出: [1, 2, 3, 4, 5]
open('data.pickle', 'rb')
:以二进制读取模式打开 data.pickle
文件。pickle.load(f)
:从文件 f
中读取字节流并将其反序列化为 Python 对象,赋值给 loaded_data
变量。print(loaded_data)
:打印反序列化后的对象。