首页 > 解决方案 > 在 ftp 上自动编辑文件

问题描述

因此,情况如下:每天一次,将一个 csv 文件传送到我的 ftp 服务器。我需要将此信息导入我的 CRM 系统 (Salesforce)。对于这个操作,我计划使用 skyvia.com 和他们的调度服务。挑战在于 csv 在列上没有标题,而 skyvia 不处理这个问题。

所以问题:

  1. 是否可以在 ftp 服务器上的 csv 文件中自动插入标题行?我很可能会聘请一名自由职业者来做这件事,但我需要知道我的要求是什么。python web 脚本/应用程序是否能够处理这个问题?

  2. 是否有任何替代 skyvia 可以处理没有列标题的导入 csv?

  3. 是否有任何其他解决方案来处理此导入操作,无需编辑 csv 或使用 Skyvia,可以为 Salesforce 处理此问题?

我的技术水平足以自己处理一些操作,但我确实知道我的极限......

标签: pythonjsoncsvftpsalesforce

解决方案


FTP 协议不允许您在文件的开头插入一行。

您必须下载整个文件,在本地对其进行编辑,然后重新上传回来。

像这样:

from io import BytesIO
from ftplib import FTP

ftp = FTP(host, user, passwd)

f = BytesIO()
# Write header
f.write(str.encode("header\n"))
path = "/remote/path/file.csv"
# Append original contents
ftp.retrbinary("RETR " + path, f.write)
# Re-upload back
f.seek(0, 0)
ftp.storbinary("STOR " + path, f)

推荐阅读