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

Python运行报错NameError: filepath未定义 同目录CSV导入MongoDB问题咨询

问题根因

你代码里的核心问题有两个:

  • def import_content(filepath): 这行被你注释掉了,原本属于函数内部的代码直接暴露在全局作用域执行
  • 全局作用域执行到file_res = (os.path.join(cdir, filepath))这行时,filepath变量还没有被定义(你定义filepath的代码在更靠后的if __name__ == "__main__"块中,执行顺序靠后)
修复方案

取消函数定义的注释,把原本属于函数内的代码都缩进对齐到函数作用域下,同时替换pymongo已废弃的旧方法:

# imports
import csv
import json
import dash
import pandas as pd
import sys, getopt, pprint, os
import pymongo
import numpy as np
import dash_leaflet as dl
import plotly.express as px
import plotly.graph_objs as go
import base64

import os
from dash import dcc
from dash import html
from dash import dash_table
from pprint import pprint
from bson.objectid import ObjectId
from bson.json_util import dumps
from pymongo import MongoClient
from dash.dependencies import Input, Output, State
from dbCRUD import BidSystem

##### THIS SECTION ONLY NEEDED FOR INITIAL SETUP #####
# Setup to import the csv file into mongodb through mongodb atlas
def import_content(filepath):

    # Provide the mongodb atlas url to connect python to mongodb using pymongo and create a connection using MongoClient
    client = pymongo.MongoClient("mongodb+srv://myAdminUser:abcd1234@cluster0.zxsdm.mongodb.net/mongodb_eBids?retryWrites=true&w=majority")
    # details for the database and collection names
    mng_db = client['mongodb_eBids']
    collection_name = 'eBids'
    db_cm = mng_db[collection_name]
    #setup to pull the data from csv file and insert into mongodb as json data
    cdir = os.path.dirname(__file__)
    file_res = os.path.join(cdir, filepath)
    data = pd.read_csv(file_res)
    data_json = json.loads(data.to_json(orient='records'))
    # 替换废弃的remove、insert方法
    db_cm.delete_many({})
    db_cm.insert_many(data_json)

if __name__ == "__main__":
    filepath = 'eBids.csv'
    import_content(filepath)
###### THIS SECTION ONLY NEEDED FOR INITIAL SETUP #####
额外注意事项
  • 确认你的CSV文件名称确实为eBids.csv,和运行的py脚本放在同一文件夹下
  • 如果运行时依然提示文件找不到,可以把cdir = os.path.dirname(__file__)替换为cdir = os.getcwd()测试,避免部分运行环境下__file__变量失效
  • 生产环境不要硬编码数据库连接的账号密码,建议通过环境变量读取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:27:03