跨Mac与Windows平台读取文件夹内JSON文件的路径适配问题
跨平台路径适配解决方案
直接硬编码带反斜杠的路径会导致跨平台兼容问题——Windows用\作为路径分隔符,而macOS(以及Linux)用/。解决这个问题的核心是用Python标准库自动处理路径分隔符,不需要手动写死路径符号。
方法1:使用os.path模块(兼容Python 2和3)
os.path会根据当前操作系统自动选择正确的分隔符,用os.path.join()拼接路径即可:
import os import json # 假设folder1是项目根目录下的文件夹,用相对路径拼接 PATH = os.path.join("folder1", "configurations", "globals.json") def grab_api_credentials(resource: str) -> dict: """ :param resource: database, fmp, fred, polygon """ with open(PATH, 'r') as file: data = json.load(file) if resource is None: return data return data[resource]
如果folder1的位置是相对于当前脚本文件的(而非运行脚本的工作目录),更稳妥的写法是先获取脚本所在目录,再拼接路径:
import os import json # 获取当前脚本所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 从脚本目录出发拼接目标文件路径 PATH = os.path.join(script_dir, "folder1", "configurations", "globals.json") def grab_api_credentials(resource: str) -> dict: """ :param resource: database, fmp, fred, polygon """ with open(PATH, 'r') as file: data = json.load(file) if resource is None: return data return data[resource]
方法2:使用pathlib模块(Python 3.4+推荐)
pathlib是Python 3.4引入的面向对象路径处理库,写法更简洁直观:
from pathlib import Path import json # 相对路径写法 PATH = Path("folder1") / "configurations" / "globals.json" # 或者相对于脚本文件的路径 script_dir = Path(__file__).parent.resolve() PATH = script_dir / "folder1" / "configurations" / "globals.json" def grab_api_credentials(resource: str) -> dict: """ :param resource: database, fmp, fred, polygon """ with open(PATH, 'r') as file: data = json.load(file) if resource is None: return data return data[resource]
两种方法都能自动适配Windows和macOS的路径规则,不需要手动修改PATH变量——Python会帮你处理分隔符的差异。
内容的提问来源于stack exchange,提问作者jeisenman19
相关产品推荐
相关产品推荐

