You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python exec执行动态生成脚本时报unicodeescape语法错误

报错根因

Windows系统路径使用的反斜杠\在Python普通字符串中是转义标识符,你动态写入file.py的路径字符串没有做转义处理,路径开头的C:\User中\U会被Python解析为Unicode长转义序列的起始标记,后续字符不符合\U后必须跟8位十六进制数的语法要求,因此触发truncated \UXXXXXXXX escape语法错误。

现有实现的冗余问题

你当前采用「动态写临时脚本→exec执行」的流程完全没有必要,额外增加了文件IO、转义处理、权限异常的故障点。之前尝试调用外部脚本返回空白无响应,基本是以下原因导致:

  • 传入脚本的路径未做转义,脚本启动即触发语法错误直接退出,未捕获stderr错误流就会表现为无输出
  • 调用外部进程时未指定正确工作目录,导致脚本找不到依赖或目标文件
  • 视频转码是耗时操作,未等待进程执行完成就中断或判定为无响应
修复方案

方案1:最小改动兼容现有逻辑

只需要修改动态写入脚本的代码,给路径字符串增加原始字符串前缀r,让Python不解析路径里的反斜杠转义即可,同时去掉冗余的清空文件操作、指定文件编码避免异常:

import glob
import os.path

folder_path = r'C:\User\Desktop\Folder\Audio'
file_type = r'\*mp4'
files = glob.glob(folder_path + file_type)
max_file = max(files, key=os.path.getctime)
mp3_file = max_file.replace('.mp4', '')

# 去掉之前先写空字符串的冗余步骤,w模式会自动清空文件
with open ("file.py", 'w', encoding='utf-8') as f:
    f.write('from moviepy.editor import *\n'
            # 路径字符串前加r前缀,标记为原始字符串
            f"mp4_file = r'{max_file}'\n"
            f"mp3_file = r'{mp3_file}.mp3'\n"
            'videoclip = VideoFileClip(mp4_file)\n'
            'audioclip = videoclip.audio\n'
            'audioclip.write_audiofile(mp3_file)\n'
            'audioclip.close()\n'
            'videoclip.close()\n')

exec(open("file.py", encoding='utf-8').read())

方案2:移除临时文件逻辑(推荐)

不需要生成中间脚本、不需要调用exec,直接在主脚本内完成转换逻辑,代码更简洁、排错更方便,完整可运行代码:

import glob
import os.path
from moviepy.editor import VideoFileClip

folder_path = r'C:\User\Desktop\Folder\Audio'
file_type = r'\*mp4'
files = glob.glob(folder_path + file_type)
# 增加空目录判断,避免无文件时max函数报错
if not files:
    raise RuntimeError("指定目录下未找到MP4文件")
max_file = max(files, key=os.path.getctime)
# 用os.path.splitext处理后缀,避免误替换文件名中包含的.mp4字符
mp3_file = os.path.splitext(max_file)[0] + '.mp3'

videoclip = VideoFileClip(max_file)
audioclip = videoclip.audio
audioclip.write_audiofile(mp3_file)
audioclip.close()
videoclip.close()

注意:如果目录下MP4文件较多,glob查找和getctime取最新文件的逻辑可能会因为系统文件时间精度问题取错文件,对准确性要求高可以增加文件修改时间、大小的二次校验。

内容的提问来源于stack exchange,提问作者Drum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:09:57