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

Python调用os.startfile打开含重音路径MKV文件遇WinError2错误

问题解决:Python3电影数据库打开含法语重音的.mkv文件报FileNotFoundError(WinError 2)

问题背景

我开发了一个Python3电影数据库项目,包含影片标题、剧情、评分、类型等信息,点击界面内的影片条目会触发打开对应本地视频文件的操作。但在打开.mkv格式文件时,始终抛出FileNotFoundError: [WinError 2]错误,且目标文件路径包含法语重音字符。

相关代码

错误版本(遗漏子文件夹)

import subprocess
import os

def launch_video(file_name):
    # 错误点:仅拼接根目录与文件名,缺失中间子文件夹层级
    wrong_path = os.path.join("D:/Films", file_name)
    subprocess.run(["start", "", wrong_path], shell=True)

修正后版本

import subprocess

def launch_video(full_file_path):
    # 直接使用数据库存储的完整路径
    subprocess.run(["start", "", full_file_path], shell=True)

完整报错信息

Traceback (most recent call last):
  File "movie_db.py", line 45, in launch_video
    subprocess.run(["start", "", wrong_path], shell=True)
  File "C:\Python39\lib\subprocess.py", line 505, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\Python39\lib\subprocess.py", line 951, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Python39\lib\subprocess.py", line 1420, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 系统找不到指定的文件。

数据库中存储的文件路径示例

D:/Films Français/La Haine.mkv

排查与解决过程

  1. 最初怀疑是法语重音字符的编码问题,但打印修正后的路径时,字符显示完全正常,排除编码因素
  2. 对比数据库存储路径与代码生成路径,发现代码手动拼接路径时遗漏了子文件夹Français,导致路径不完整,系统无法定位文件
  3. 解决方式:直接调用数据库中存储的完整文件路径,不再手动拆分拼接路径片段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:52:10