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

Python中sys.argv[0]结果不一致及获取主脚本目录的问题

问题1:sys.argv结果不一致的原因

sys.argv[0]的取值完全由调用Python解释器时传入的脚本路径参数决定:

  • 你在CMD中执行python test.py时,给解释器传的脚本路径是相对路径test.py,因此sys.argv[0]直接返回该相对路径值
  • IDLE、VS Code这类编辑器执行脚本时,会默认将脚本的绝对路径作为参数传给Python解释器,因此sys.argv[0]返回完整的C:\example\test.py

问题2:获取主脚本所在目录的最优方案

直接使用Python内置的__file__属性即可,该属性是Python为每个加载的模块内置的固定属性,主脚本作为直接运行的模块,该属性始终指向脚本本身的文件路径,完全不受调用时传参、当前工作目录修改的影响,稳定性远高于sys.argv和os.getcwd()。

你可以根据自己的使用习惯选择以下两种标准库实现方案:

方案1:使用os.path实现(兼容所有Python3版本)

import os

if __name__ == "__main__":
    result = os.path.dirname(os.path.abspath(__file__))
    print(result)

运行后将直接输出C:\example

方案2:使用pathlib实现(Python3.4+推荐,面向对象更易用)

from pathlib import Path

if __name__ == "__main__":
    result = str(Path(__file__).resolve().parent)
    print(result)

如果不需要字符串类型,直接保留Path对象即可,后续拼接路径等操作会更便捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:24:01