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

Docker环境下Pandas读取CSV报FileNotFoundError问题求助

Docker容器中读取CSV文件及连接PostgreSQL的问题解决

一、CSV文件找不到的问题

容器是独立的隔离环境,宿主机的/Users/myname/Downloads目录不会自动映射到容器内部,所以代码里的绝对路径在容器中不存在,导致FileNotFoundError。

解决方法有两种:

方法1:将CSV文件复制到容器内

修改你的Dockerfile,添加COPY指令把CSV文件同步到容器中:

FROM python:3.8

# 把本地的CSV文件和main.py都复制到容器工作目录
COPY file511282022.csv .
COPY main.py .

RUN pip install requests pandas sqlalchemy

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

同时修改main.py中的文件路径为容器内的相对路径:

df = pd.read_csv(r"./file511282022.csv", names=columns)

注意:构建镜像时,要确保CSV文件和Dockerfile、main.py在同一个文件夹下。

方法2:用Docker挂载卷(推荐,适合文件需要更新的场景)

不需要修改Dockerfile,运行容器时通过-v参数把宿主机的Downloads目录挂载到容器内的指定路径:

docker run -v /Users/myname/Downloads:/app/csv 你的镜像名称

然后修改main.py中的文件路径为容器内的挂载路径:

df = pd.read_csv(r"/app/csv/file511282022.csv", names=columns)

二、PostgreSQL连接失败的潜在问题

你的main.py中用localhost:5432连接数据库,但容器内的localhost指向容器自身,而PostgreSQL运行在宿主机上,后续会出现连接失败的问题,提前解决:

  • 把连接地址改成宿主机的实际IP(比如192.168.1.100,根据你的网络配置调整):
    engine = create_engine('postgresql://postgres:mypassword@192.168.1.100:5432/postgres')
    
  • 如果用Docker Compose管理服务,可以把PostgreSQL和Python服务放在同一个Docker网络中,直接用PostgreSQL的服务名作为主机名连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:06:14