- 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 会原样处理字符串中的每一个字符
- 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_CACHE 和 OUTPUT_DIR 是预先定义的变量,存储了具体的路径字符串
- 参数二:
exist_ok=True,这是一个关键字参数
- 默认情况 (
False):如果目标目录已经存在,Python 会抛出一个 FileExistsError 异常,导致程序中断
- 设置为
True:如果目标目录已存在,程序将静默忽略,不报错并继续执行。如果目录不存在,则正常创建
- 假设
OUTPUT_DIR 的值是 D:\Project\Result:
| 情况 |
执行结果 |
D:\Project 不存在 |
函数会先创建 Project 文件夹,再创建 Result 文件夹。 |
Result 文件夹已存在 |
因为 exist_ok=True,程序直接跳过,不会报错。 |
Result 是一个已存在的文件名 |
无论 exist_ok 为何值,都会抛出异常,因为无法创建同名目录。 |
- 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'])
f-string
1
| text = f"do {action_a} twice"
|
f-string 允许你在字符串中直接嵌入变量或表达式,不用 f-string 就需要用加号拼接,容易漏掉空格:
1
| text = "do " + action_a + " twice"
|