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

Python读取从FTP下载的CSV文件无法读取全部行如何解决?

根因分析

行缺失的核心原因是下载文件后未关闭本地文件对象,写入的数据仍滞留在系统缓冲区未完全落盘,此时直接调用pandas读取只能拿到部分数据。

修复后代码

import ftplib
import pandas as pd
import os

# FTP连接配置
ftp = ftplib.FTP('IP', 'username','password')
# 切换到目标目录
ftp.cwd("Folder_Name")

# 筛选所有csv文件
names = ftp.nlst()
final_names= [line for line in names if '.csv' in line]

# 取最新修改的csv文件
latest_time = None
latest_name = None
for name in final_names:
    time1 = ftp.sendcmd("MDTM " + name)
    if (latest_time is None) or (time1 > latest_time):
        latest_name = name
        latest_time = time1

# 用with上下文管理器自动关闭文件,确保所有内容写入磁盘
with open(latest_name, 'wb') as file:
    ftp.retrbinary('RETR '+ latest_name, file.write)

# 可选校验:确认文件下载完整
ftp_file_size = ftp.size(latest_name)
local_file_size = os.path.getsize(latest_name)
if ftp_file_size != local_file_size:
    raise Exception(f"文件传输不完整,服务端大小{ftp_file_size}字节,本地大小{local_file_size}字节")

# 读取完整文件
dat = pd.read_csv(latest_name)

# 主动关闭FTP连接释放资源
ftp.quit()

其他排查点

如果调整后仍存在行缺失,可检查以下配置:

  • 确认服务端源CSV文件本身无损坏、行数确实为3072行
  • 若CSV存在非标准换行符、特殊编码,可给pd.read_csv增加encoding、lineterminator参数适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:54:03