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

Python读取FTP中CSV文件及目录操作与Pandas直接加载方法

没问题,我来一步步帮你搞定这个需求!

操作FTP服务器:获取文件夹列表并切换目录

Python里用内置的ftplib库就能轻松搞定FTP操作,既然你已经成功连接服务器了,直接看后续步骤:

  • 获取根目录下的文件夹列表:
    ftp.nlst()会返回根目录的所有条目,但没法直接区分文件和文件夹,所以我们可以通过尝试切换目录的方式来筛选:
from ftplib import FTP

# 假设你已经完成连接,比如:ftp = FTP('你的服务器地址', '用户名', '密码')

all_items = ftp.nlst()
folders = []
for item in all_items:
    try:
        # 尝试切换到该条目,成功就说明是文件夹
        ftp.cwd(item)
        folders.append(item)
        # 切回根目录继续判断其他条目
        ftp.cwd('..')
    except:
        # 切换失败,说明是文件,跳过
        pass

print("根目录下的文件夹:", folders)
  • 进入指定文件夹:
    直接用cwd命令就行,比如你要进入名为sales_data的文件夹,执行:
ftp.cwd('sales_data')

之后所有操作就会在这个文件夹下进行啦。

读取FTP上的CSV并加载到Pandas

完全可以直接加载到Pandas里,给你两种常用方案:

方案1:先下载到本地再读取

适合文件较大的场景,步骤直观:

import pandas as pd

# 假设当前在目标文件夹,要读取monthly_sales.csv
local_save_path = './monthly_sales.csv'
with open(local_save_path, 'wb') as local_file:
    # 从FTP下载文件到本地
    ftp.retrbinary('RETR monthly_sales.csv', local_file.write)

# 加载到Pandas DataFrame
df = pd.read_csv(local_save_path)

方案2:内存直接读取(无需本地存储)

更高效,不用占用本地磁盘空间,借助io.BytesIO做内存缓冲区:

import pandas as pd
from io import BytesIO

# 把CSV内容读取到内存缓冲区
csv_buffer = BytesIO()
ftp.retrbinary('RETR monthly_sales.csv', csv_buffer.write)
# 重置缓冲区指针到开头,不然Pandas读不到内容
csv_buffer.seek(0)

# 直接加载到Pandas
df = pd.read_csv(csv_buffer)

如果要批量处理文件夹里的所有CSV,还可以这么做:

# 获取当前目录下所有CSV文件
current_dir_items = ftp.nlst()
csv_files = [file for file in current_dir_items if file.lower().endswith('.csv')]

# 批量加载成DataFrame列表
df_collection = []
for csv_file in csv_files:
    buffer = BytesIO()
    ftp.retrbinary(f'RETR {csv_file}', buffer.write)
    buffer.seek(0)
    df = pd.read_csv(buffer)
    df_collection.append(df)

# 要是需要合并所有数据
combined_df = pd.concat(df_collection, ignore_index=True)

小提醒

  • 确保你的FTP账号有文件读取权限,不然会触发权限错误。
  • 如果CSV文件有特殊编码(比如GBK),记得在pd.read_csv里加上encoding='gbk'参数。
  • 超大文件建议用方案1,避免内存过载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:26:14