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

如何实现用户从任意目录上传CSV文件到MongoDB的功能

解决方案

你想要的动态读取任意位置CSV的需求不需要用到tempfile模块,tempfile主要用于生成程序运行时临时存储的文件/目录,直接获取用户指定的文件路径即可,以下是两种适合初学者的实现方案:

方案1:命令行传参实现

运行脚本时直接把CSV文件路径作为参数传入,无需修改代码,只要运行时指定路径即可读取任意位置的文件。
修改后代码如下:

import pandas as pd
from pymongo import MongoClient
import sys

# 校验参数是否传入
if len(sys.argv) < 2:
    print("请在运行时传入CSV文件路径,示例:python upload.py C:\测试\文件.csv")
    exit()
csv_path = sys.argv[1]

client =  MongoClient("mongodb+srv://xxx:xxx@bycardb.lrp4p.mongodb.net/myFirstDatabase?retryWrites=true&w=majority")
print('connected')
db = client['dbycar']
collection = db['users']

data = pd.read_csv(csv_path)
data.reset_index(inplace=True)
data_dict = data.to_dict("records")
collection.insert_many(data_dict)
print("上传完成")

使用方法:把脚本保存为upload.py,打开终端运行时在后面加上你的CSV文件完整路径即可,例如:python upload.py D:\下载\测试.csv

方案2:图形化文件选择框实现

运行脚本后会弹出系统的文件选择窗口,直接点选要上传的CSV文件即可,不需要手动输入路径,对新手更友好。
修改后代码如下:

import pandas as pd
from pymongo import MongoClient
import tkinter as tk
from tkinter import filedialog

# 初始化tk窗口并隐藏主窗口
root = tk.Tk()
root.withdraw()

# 弹出文件选择框,限制只能选CSV文件
csv_path = filedialog.askopenfilename(
    title="选择要上传的CSV文件",
    filetypes=[("CSV文件", "*.csv")]
)
# 校验是否选中了文件
if not csv_path:
    print("未选择任何文件,程序退出")
    exit()

client =  MongoClient("mongodb+srv://xxx:xxx@bycardb.lrp4p.mongodb.net/myFirstDatabase?retryWrites=true&w=majority")
print('connected')
db = client['dbycar']
collection = db['users']

data = pd.read_csv(csv_path)
data.reset_index(inplace=True)
data_dict = data.to_dict("records")
collection.insert_many(data_dict)
print("上传完成")

使用方法:直接运行脚本,在弹出的文件选择窗口中找到你要上传的CSV文件选中即可,不管文件在电脑哪个位置都能读取。

内容的提问来源于stack exchange,提问作者João Vitor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:36:05