Common Python Statements

  1. Variable Assignment Statement
1
BABEL_PATH = r"D:\Desktop\Research\BABEL\train.json"
  • 全大写字母通常用来表示常量。这意味着该路径在程序运行过程中一般不会被修改
  • r 代表 raw string(原始字符串),在 Python 字符串中,反斜杠 \ 通常被视为转义字符(例如 \n 表示换行,\t 表示制表符),而Windows 系统的路径使用反斜杠。如果不加 r,路径中的某些组合(如 \t\train.json 中)会被误判为转义字符,导致路径解析失败。加上 r 后,Python 会原样处理字符串中的每一个字符
  1. Make directory
1
2
os.makedirs(VIDEO_CACHE, exist_ok=True)
os.makedirs(OUTPUT_DIR, exist_ok=True)
  • os:Python 的内置模块,提供了与操作系统交互的功能
  • makedirs:该函数用于创建目录。与 os.mkdir 不同,makedirs 可以创建“多级”目录。如果路径中的父目录不存在,它会自动一并创建
  • 参数一:路径变量(VIDEO_CACHE / OUTPUT_DIR
    • 这是传递给函数的第一个位置参数,表示待创建目录的路径
    • VIDEO_CACHEOUTPUT_DIR 是预先定义的变量,存储了具体的路径字符串
  • 参数二:exist_ok=True,这是一个关键字参数
    • 默认情况 (False):如果目标目录已经存在,Python 会抛出一个 FileExistsError 异常,导致程序中断
    • 设置为 True:如果目标目录已存在,程序将静默忽略,不报错并继续执行。如果目录不存在,则正常创建
  • 假设 OUTPUT_DIR 的值是 D:\Project\Result
情况 执行结果
D:\Project 不存在 函数会先创建 Project 文件夹,再创建 Result 文件夹。
Result 文件夹已存在 因为 exist_ok=True,程序直接跳过,不会报错。
Result 是一个已存在的文件名 无论 exist_ok 为何值,都会抛出异常,因为无法创建同名目录。
  1. Context Manager
1
2
    with open(BABEL_PATH, 'r', encoding='utf-8') as f:
        babel_data = json.load(f)
  • with 关键字启动一个上下文管理器,它负责安全地打开文件并在处理完毕后自动关闭文件,即使在读取过程中程序崩溃,with 也能确保文件被正确关闭,防止内存泄漏或文件损坏
    • BABEL_PATH: 之前定义的变量,存储了文件的具体路径
    • 'r': Read(只读模式)。明确告诉系统我们只想读取内容,不修改
    • encoding='utf-8': 指定字符编码。这在处理包含中文字符或特殊符号的 JSON 文件时至关重要,可以避免乱码
  • json.load(): 是 Python 内置 json 模块的一个函数,将打开的文件对象 f 中的字符串内容解析并转换为 Python 的字典(dict)或列表(list),之后你就可以像操作普通字典一样操作 babel_data(例如:babel_data['video_id']
  1. f-string
1
text = f"do {action_a} twice"

f-string 允许你在字符串中直接嵌入变量或表达式,不用 f-string 就需要用加号拼接,容易漏掉空格:

1
text = "do " + action_a + " twice"