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

Python代码优化:精简JSON上传至FTP的文件操作代码

优化FTP上传的文件操作

嘿 Lukas,你这个优化想法非常合理——两次打开同一个文件确实会额外消耗系统资源,咱们可以通过调整文件打开模式,把写入和读取操作合并到一次文件打开中,具体实现如下:

修改后的代码

def ftp_upload(local_ftpfile_path, ftp_ftpfile_path):
    json_data = {...}
    # 使用 w+b 模式打开文件:w(清空/创建文件)+ b(二进制模式)+ +(支持读写)
    with open(local_ftpfile_path, 'w+b') as f:
        # 将JSON数据转为字符串后编码为字节,写入二进制文件
        json_str = json.dumps(json_data)
        f.write(json_str.encode('utf-8'))
        # 将文件指针移到文件开头,准备读取内容
        f.seek(0)
        try:
            # 直接使用同一个文件句柄上传
            session.storbinary('STOR ' + ftp_ftpfile_path, f)
        except ... :
            ...
        else:
            ...

关键调整说明

  • 文件模式选择:使用w+b模式,它同时满足三个核心需求:
    • w:打开文件时会清空原有内容(如果文件不存在则创建),和你原来的w模式行为完全一致;
    • b:以二进制模式操作文件,完美匹配storbinary方法需要的二进制流格式;
    • +:允许对文件同时进行读写操作,这样写完内容后无需重新打开就能直接读取上传。
  • 指针重置:写完JSON内容后必须调用f.seek(0),把文件指针移到文件最开始的位置,否则storbinary会从文件末尾开始读取,导致上传空内容。
  • 自动资源管理:保留with语句,它会在代码块结束后自动关闭文件,无需手动调用f.close(),比原来的写法更安全简洁。

如果习惯用json.dump而非json.dumps,也可以用io.TextIOWrapper把二进制文件对象包装成文本模式,但上面的写法更直接高效,推荐优先使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:42:26