Python os.chdir切换CMD工作目录失效、运行报错解决方案
核心错误说明
你的代码存在3个必然导致功能失效的问题:
os.chdir()无法识别CMD格式的环境变量占位符(%变量名%是CMD shell专属语法,Python原生不会解析这类字符串,直接传入会被当成普通文件夹路径查找,必然匹配失败)。os.system('cd 路径')完全不会修改Python进程的工作目录:os.system每次执行都会启动独立的CMD子进程,子进程内的目录切换仅在子进程生命周期内生效,命令执行完子进程立刻销毁,对Python主进程没有任何影响。- 路径拼接逻辑本身错误:
%SystemRoot%对应的是Windows系统目录(默认是C:\Windows),并非用户目录的父级,哪怕你成功解析了环境变量,拼出的路径也是C:\Windows\Users\用户名\...,这个路径本身不存在,必然触发报错。 - 额外提醒:手动替换硬编码路径时如果仍然失败,优先检查路径前缀是否写错,正确的用户目录前缀是
C:\Users\用户名,不要带Windows层级。
正确实现代码
不要通过调用系统cd命令切换目录,直接用Python内置能力获取路径、切换工作目录即可,自动兼容斜杠/反斜杠,不需要手动转义:
import os from pathlib import Path # 自动读取当前系统的用户根目录,无需手动写用户名 user_home = Path(os.environ["USERPROFILE"]) # 自动拼接Chrome用户数据目录路径 target_dir = user_home / "AppData" / "Local" / "Google" / "Chrome" / "User Data" # 切换前校验路径是否存在,避免抛出异常 if target_dir.is_dir(): os.chdir(target_dir) # 打印当前工作目录验证切换结果 print(f"当前工作目录已切换为:{os.getcwd()}") else: print(f"目标路径不存在,请检查Chrome安装情况:{target_dir}")
验证注意事项
不要通过os.system('cd')查看当前路径,该命令返回的是独立子进程的路径,和Python主进程的工作目录无关,验证路径直接调用os.getcwd()即可。
内容的提问来源于stack exchange,提问作者Soufiane El Himani
相关产品推荐
相关产品推荐

