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

使用Python批量导入Excel到SQL Server时遇循环TypeError报错求助

解决Python批量上传xlsx至SQL Server的TypeError问题

错误原因

你的代码中folder = os.chdir(r"C:\Users\800061199\Desktop\Teste_Base")这一行存在核心问题:os.chdir()函数仅负责切换当前工作目录,没有返回值(返回None),导致folder变量被赋值为None。后续调用os.listdir(folder)时传入了None,触发TypeError: expected str, bytes or os.PathLike object, not NoneType。

修正方案

方案1:直接使用文件夹路径(推荐)

无需切换目录,直接用绝对路径字符串操作,避免依赖当前工作目录的状态:

import os
import pandas as pd

# 直接存储文件夹绝对路径
folder = r"C:\Users\800061199\Desktop\Teste_Base"
# 筛选文件夹下的xlsx文件
farqs = [arq for arq in os.listdir(folder) if arq.endswith('.xlsx')]

for arq in farqs:
    # 拼接完整文件路径
    file_path = os.path.join(folder, arq)
    df = pd.read_excel(file_path)
    
    # 用文件名作为SQL表名(去掉后缀)
    table = os.path.splitext(arq)[0]
    df.to_sql(table, engine, if_exists='replace', index=False)

方案2:先切换目录再操作

如果需要切换到目标目录,将os.chdir()和变量赋值分开:

import os
import pandas as pd

# 单独执行目录切换,不赋值给变量
os.chdir(r"C:\Users\800061199\Desktop\Teste_Base")
# os.listdir()不传参数默认读取当前工作目录
farqs = [arq for arq in os.listdir() if arq.endswith('.xlsx')]

for arq in farqs:
    # 当前目录下直接读取文件
    df = pd.read_excel(arq)
    
    table = os.path.splitext(arq)[0]
    df.to_sql(table, engine, if_exists='replace', index=False)

关键提示

  • os.chdir()仅改变当前工作目录,不会返回任何路径值,不能用它来获取文件夹路径。
  • 优先使用方案1的绝对路径写法,代码更健壮,不易因后续目录变更出现问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:07:21