Python从环境变量读取文件名时的路径问题求助
解决Python读取可执行目录文件的路径问题
问题根源
直接用环境变量获取的文件名时,Python会以当前工作目录(而非脚本/可执行文件所在目录)查找文件,导致找不到;手动加.\的话,路径会被解析为相对当前工作目录的路径,而非目标目录。
解决方案
通过获取Python可执行文件的绝对目录,再与环境变量中的文件名拼接,同时标准化路径,确保跨平台兼容:
- 导入依赖模块
import os import sys
- 获取可执行文件所在的绝对目录
# 获取Python可执行文件的绝对路径,再提取目录部分 exe_dir = os.path.dirname(os.path.abspath(sys.executable))
- 处理环境变量中的文件名并拼接绝对路径
# 从环境变量读取文件名,可设置默认值(可选) filename_env = os.environ.get('HIRES_2023_FILE', '2023_hires.csv') # 标准化路径,自动去除多余的`.\`/`./`等相对前缀 clean_filename = os.path.normpath(filename_env) # 拼接成完整的绝对路径 full_file_path = os.path.join(exe_dir, clean_filename)
- 打开文件
with open(full_file_path, 'r', encoding='utf-8') as file: # 处理文件内容逻辑 pass
关键说明
- 环境变量只需设置为
HIRES_2023_FILE=2023_hires.csv,无需加.\前缀。 os.path.normpath()会自动处理不同系统的路径分隔符(Windows的\和Linux的/),同时清理无效的相对路径前缀,比手动str.replace()更可靠。
内容的提问来源于stack exchange,提问作者Jim Rutter
相关产品推荐
相关产品推荐

