You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取Python执行脚本的目录路径(非os.getcwd())及检测同目录文件

获取Python脚本自身所在目录的正确方式

这个问题我之前也踩过坑,os.getcwd()确实完全不符合需求——它返回的是你执行脚本时的工作目录,和脚本实际存放的位置毫无关系。要获取脚本自身的目录,核心是利用Python内置的__file__属性,结合路径处理模块来实现,下面给你两种靠谱的方案:

方案1:使用传统的os.path模块

这是兼容所有Python版本的经典写法,逻辑清晰易懂:

import os

# 第一步:获取脚本的绝对路径(不管执行时在哪,都能拿到脚本的真实路径)
script_abs_path = os.path.abspath(__file__)
# 第二步:提取脚本所在的目录
script_dir = os.path.dirname(script_abs_path)

# 接下来检测同目录下的siblingScript.py
sibling_script_path = os.path.join(script_dir, "siblingScript.py")
if os.path.isfile(sibling_script_path):
    print("✅ siblingScript.py 存在于脚本目录中")
else:
    print("❌ siblingScript.py 不在脚本目录里")

为什么这能行?

  • __file__是Python为脚本文件提供的内置属性,会返回当前脚本的路径(可能是相对路径,所以用os.path.abspath()转成绝对路径)
  • os.path.dirname()会从完整路径中剥离文件名,只留下目录部分
  • os.path.join()负责安全拼接路径,避免手动拼字符串出现跨平台问题(比如Windows的\和Linux的/

方案2:使用Python 3.4+的pathlib模块(推荐)

如果你用的是Python 3.4及以上版本,pathlib提供了更优雅的面向对象路径操作,代码更简洁:

from pathlib import Path

# 获取脚本所在目录:resolve()转绝对路径,parent取父目录(也就是脚本所在目录)
script_dir = Path(__file__).resolve().parent

# 检测同目录文件
sibling_script = script_dir / "siblingScript.py"  # 直接用/拼接路径,非常直观
if sibling_script.is_file():
    print("✅ siblingScript.py 存在")
else:
    print("❌ siblingScript.py 不存在")

这种写法更符合现代Python的风格,可读性和维护性都更好,还自带跨平台支持,不用再操心路径分隔符的问题。

注意事项

  • 这两种方法仅适用于作为脚本执行的场景,如果你在Python交互式环境(比如ipython、python shell)里运行,__file__属性会不存在,会报错——但你的需求是执行脚本,所以完全没问题。

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

火山引擎 最新活动