vscode运行python代码时,相对路径错误

问题:

假设你的文件结构是:/Work/Program/main.py,如果你在main.py里写了

with open('file.txt','w') as f:
    f.write('HelloWorld')

那么在vscode中,新生成的文件将会出现在/Work下,而不是/Work/Program下。


原因:

python插件的cwd默认是文件夹根目录,env默认就只有python解释器的查找路径。


解决办法:

  • 如果是用调试器(F5),可以在launch.json中加入"cwd": “${fileDirname}”,或者缺省这一项(“cwd”: “”)

  • 如果用的code runner插件,可以在插件设置中勾选File Directory As Cwd
    在这里插入图片描述

  • 如果是用的python插件,右键选择在terminal中运行代码。那么就比较复杂了:
    python 脚本执行的时候都是以调用脚本的工作目录为准,为了保证生成的文件与 py 脚本在同一目录下,可以使用以下方法获取 py 文件所在目录,然后合成待生成文件的目录:

    import sys
    import os.path as op
    
    with open(op.join(sys.path[0], 'file.txt'), 'w') as f:
    	f.write('HelloWorld')
    

    或者

    #加上下面代码
    import os, sys
    
    os.chdir(sys.path[0])
    
    #然后就可以愉快使用相对路径了
    

参考链接

### VSCode Python 中文路径问题及解决方案 在使用 Visual Studio Code (VSCode) 进行 Python 开发,如果项目涉及到中文路径,可能会遇到编码错误或其他异常情况。这类问题通常源于默认字符集不支持中文或者配置不当所致。 #### 1. **原因分析** 当 VSCode 的工作目录或文件路径中包含中文字符Python 解释器可能无法正确解析这些路径。这是因为某些情况下,解释器使用的默认编码方式(如 ASCII 或 Latin-1)并不兼容 UTF-8 编码下的中文字符[^1]。此外,VSCode 插件中的路径管理机制也可能存在局限性,未能自动适配复杂的多字节字符环境[^3]。 --- #### 2. **解决方案** ##### 方法一:修改 `launch.json` 配置 通过调整调试配置文件 `launch.json` 来指定正确的编码格式和工作目录: ```json { "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${fileDirname}", // 设置当前脚本所在目录为工作目录 "env": { // 添加环境变量以强制使用UTF-8编码 "PYTHONIOENCODING": "utf-8" } } ] } ``` 上述代码片段的作用在于: - 使用 `${fileDirname}` 将工作目录切换到当前运行的 `.py` 文件所在的目录,从而规避因全局根目录引起的相对路径问题。 - 借助 `PYTHONIOENCODING` 环境变量确保输入/输出操作均采用 UTF-8 编码,避免中文乱码现象。 --- ##### 方法二:更新 Python 脚本头部声明 对于独立运行Python 脚本,可以在文件开头加入如下声明语句,显式定义源码编码形式: ```python # -*- coding: utf-8 -*- import sys sys.path.append('.') # 动态添加当前目录至模块搜索路径 print(sys.getfilesystemencoding()) # 输出系统文件系统的编码类型 ``` 此方法能够有效防止由于未明确定义编码而导致的潜在冲突,并允许动态扩展模块加载范围[^2]。 --- ##### 方法三:升级相关组件版本 部分早期版本的 VSCode 及其配套插件可能存在已知缺陷,建议定期检查并安装最新稳定版软件及其依赖项。例如,执行以下命令可确认所用 Python 扩展是否处于最新状态: ```bash code --install-extension ms-python.python@latest ``` 同,保持操作系统区域设置与目标开发语言一致也有助于减少不必要的干扰因素。 --- ### 总结 综上所述,针对 VSCodePython 工程内的中文路径难题,可通过优化调试参数、完善脚本初始化逻辑以及适维护技术栈等方式予以妥善应对。以上措施不仅有助于提升工作效率,还能显著改善用户体验质量。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值