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

如何在Python+Docker环境中正确加载JSON文件?解决文件找不到错误

问题原因

容器内运行时,Python脚本的工作目录是/stockalert-app,而data.json实际位于/stockalert-app/app/目录下。本地运行时你是在app目录下执行脚本,相对路径data.json能找到文件,但容器里工作目录是上层目录,导致路径匹配失败。

解决方案

方案1:修改Python代码(推荐,跨环境通用)

通过获取脚本所在目录的绝对路径来拼接文件路径,确保无论在哪里运行都能找到data.json:

修改main.py代码:

import json
import os

def importData(fileName):
    # 获取当前脚本所在的绝对目录
    script_dir = os.path.dirname(os.path.abspath(__file__))
    # 拼接出文件的完整路径
    file_path = os.path.join(script_dir, fileName)
    with open(file_path) as json_file:
        data = json.load(json_file)    
    return data


def main():
    data = importData('data.json')
    print("Data: ")
    print(data)

if __name__ == "__main__":
    main()

方案2:调整Dockerfile的工作目录

将容器的工作目录设置为app目录,这样相对路径就能匹配:

修改后的Dockerfile:

FROM python:3

# 将工作目录切换到app文件夹
WORKDIR /stockalert-app/app

# 复制requirements.txt到上层目录(因为WORKDIR现在是app)
COPY requirements.txt ../requirements.txt
RUN pip3 install -r ../requirements.txt

# 复制app目录下的所有文件到当前工作目录(即/stockalert-app/app)
COPY ./app .

CMD [ "python", "main.py" ]

方案3:修改CMD命令,执行前切换目录

保持原有Dockerfile不变,修改CMD命令,先进入app目录再执行脚本:

FROM python:3

WORKDIR /stockalert-app

COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt

COPY ./app ./app

# 用shell命令先切换目录再执行python脚本
CMD [ "sh", "-c", "cd ./app && python main.py" ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:01:09