Python如何获取脚本所在绝对路径 实现任意位置运行时正常读取文本文件
解决方案
你当前使用的相对路径是基于进程工作目录(即执行脚本时终端所在的目录)解析的,而非脚本文件本身的存储目录,因此切换运行位置后就会出现文件找不到的报错。
推荐方案(Python 3.4+,官方推荐跨平台实现)
使用标准库pathlib实现,语法简洁,自动适配多系统路径规则:
from pathlib import Path # 获取当前脚本所在目录的绝对路径 script_dir = Path(__file__).absolute().parent # 拼接目标文件的绝对路径 help_text_path = script_dir / "files" / "help_text.txt" # 用with上下文管理器自动管理文件句柄,避免资源泄漏 with open(help_text_path, "r", encoding="utf-8") as f: help_text_content = f.read() print(help_text_content)
兼容旧版本Python方案(os模块实现)
如果需要适配Python 2或更早的3.x版本,可以用os模块实现相同逻辑:
import os # 获取当前脚本所在目录的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 自动适配系统路径分隔符拼接目标路径 help_text_path = os.path.join(script_dir, "files", "help_text.txt") with open(help_text_path, "r", encoding="utf-8") as f: help_text_content = f.read() print(help_text_content)
说明
- 两种方案均会动态读取脚本自身的存储位置生成绝对路径,无需写死固定前缀,适配用户任意安装位置的需求
- 路径拼接逻辑自动适配Windows、Linux、macOS的路径分隔符差异,无需手动处理
- 显式指定
encoding="utf-8"可以避免不同系统默认编码不一致导致的读文件乱码问题
内容的提问来源于stack exchange,提问作者Russ Steighler
相关产品推荐
相关产品推荐

