python - 永久存储

打开文件

使用 open() 函数打开文件时,open file mode(文件打开模式)是一个决定了以何种方式打开文件以及对文件可以进行哪些操作的重要参数。

基本模式

  1. 只读模式(‘r’)
    默认的打开模式,用于读取文件。如果文件不存在,会抛出 FileNotFoundError 异常。
    try:
        file = open('test.txt', 'r')
        content = file.read()
        print(content)
        file.close()
    except FileNotFoundError:
        print("文件未找到。")
    
  2. 写入模式(‘w’)
    用于写入文件。如果文件已存在,会清空文件内容;如果文件不存在,则创建新文件。
    file = open('test.txt', 'w')
    file.write('这是写入的内容。')
    file.close()
    
  3. 追加模式(‘a’)
    用于在文件末尾追加内容。如果文件不存在,则创建新文件。
    file = open('test.txt', 'a')
    file.write('\n这是追加的内容。')
    file.close()
    
  4. 二进制模式(‘b’)
    可以与上述模式组合使用,用于处理二进制文件,如图片、音频等。
  • 二进制只读模式(‘rb’)
    with open('image.jpg', 'rb') as file:
        data = file.read()
    
  • 二进制写入模式(‘wb’)
    with open('image.jpg', 'rb') as file:
        data = file.read()
    

其他模式

  1. 读写模式(‘r+’)
    用于读取和写入文件。文件指针位于文件开头,可以读取和覆盖文件内容。如果文件不存在,会抛出 FileNotFoundError 异常。
    file = open('test.txt', 'r+')
    content = file.read()
    print(content)
    file.write('这是新写入的内容。')
    file.close()
    
  2. 写读模式(‘w+’)
    用于写入和读取文件。如果文件已存在,会清空文件内容;如果文件不存在,则创建新文件。文件指针位于文件开头。
    file = open('test.txt', 'w+')
    file.write('新的内容。')
    file.seek(0)  # 将文件指针移到文件开头
    content = file.read()
    print(content)
    file.close()
    
  3. 追加读写模式(‘a+’)
    file = open('test.txt', 'a+')
    file.write('追加的新内容。')
    file.seek(0)  # 将文件指针移到文件开头
    content = file.read()
    print(content)
    file.close()
    

路径处理

pathlib 模块为路径操作提供了面向对象的方式,而 os 模块也有一些常用的路径查询函数。

路径查询

在 Python 中,pathlib 模块为路径操作提供了面向对象的方式,而 os 模块也有一些常用的路径查询函数,下面分别介绍这些操作。

  1. 当前工作目录(cwd
  • pathlib 方式
from pathlib import Path

current_dir = Path.cwd()
print(current_dir)
  • os 方式
import os

current_dir = os.getcwd()
print(current_dir)
  1. 判断是否为目录(is_dir
from pathlib import Path

path = Path('your_directory_path')
if path.is_dir():
    print(f"{path} 是一个目录。")
else:
    print(f"{path} 不是一个目录。")
  1. 判断是否为文件(is_file
from pathlib import Path

path = Path('your_file_path')
if path.is_file():
    print(f"{path} 是一个文件。")
else:
    print(f"{path} 不是一个文件。")
  1. 判断路径是否存在(exists
from pathlib import Path

path = Path('your_path')
if path.exists():
    print(f"{path} 存在。")
else:
    print(f"{path} 不存在。")
  1. 获取路径的文件名(name
from pathlib import Path

path = Path('your_directory/your_file.txt')
file_name = path.name
print(file_name)  # 输出: your_file.txt
  1. 获取文件名(不包含扩展名)(stem
from pathlib import Path

path = Path('your_directory/your_file.txt')
stem = path.stem
print(stem)  # 输出: your_file
  1. 获取父目录(parent
from pathlib import Path

path = Path('your_directory/your_file.txt')
parent_dir = path.parent
print(parent_dir)  # 输出: your_directory
  1. 获取所有上级目录(parents
from pathlib import Path

path = Path('your_directory/sub_directory/your_file.txt')
for parent in path.parents:
    print(parent)
  1. 绝对路径和相对路径
  • 绝对路径:完整地描述了文件或目录在文件系统中的位置。
  • 相对路径:相对于当前工作目录的路径。
from pathlib import Path

# 获取相对路径
relative_path = Path('your_file.txt')
# 获取绝对路径
absolute_path = relative_path.resolve()
print(f"相对路径: {relative_path}")
print(f"绝对路径: {absolute_path}")
  1. 解析路径为绝对路径(resolve
from pathlib import Path

relative_path = Path('your_file.txt')
absolute_path = relative_path.resolve()
print(absolute_path)
  1. 迭代目录中的所有项(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()

  1. 序列化(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 中。
  1. 反序列化(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):打印反序列化后的对象。

你可能感兴趣的:(python,python,服务器)