Python ftplib - 如何上传多个文件?

5 投票
3 回答
15436 浏览
提问于 2025-04-15 12:49

我在网上搜索过,但只找到怎么上传一个文件的教程... 我想把本地文件夹里的所有文件上传到远程的ftp文件夹。有没有什么好办法可以做到这一点?

3 个回答

-3

创建一个FTP批处理文件,里面列出你需要传输的文件。然后用Python来执行ftp.exe,并加上“-s”这个选项,把文件列表传进去。

这样做虽然有点麻烦,但看起来FTPlib在它的STOR命令中不支持一次传多个文件。

下面是一个FTP批处理文件的示例。

*

OPEN inetxxx 
myuser mypasswd 
binary 
prompt off 
cd ~/my_reg/cronjobs/k_load/incoming 
mput *.csv 
bye
  • 如果上面的内容保存在一个叫“abc.ftp”的文件里,那么我的FTP命令就是:

    ftp -s abc.ftp

希望这能帮到你。

0

看看这个链接:Python脚本行需要从JSON调用上传文件,还有这个链接:FTPlib操作:为什么有些上传成功而有些不成功?

虽然这两个问题的出发点不同,但在第一个链接的回答中,你可以看到一个示例,展示了如何使用ftplib上传一个json文件和一个xml文件:可以查看第024行及之后的内容。

在第二个链接中,你会看到一些与上传多个文件相关的其他方面。

这些内容也适用于json和xml以外的其他文件类型,当然在最后两个部分之前需要有不同的“入口”,这些部分定义并实现了FTP上传功能。

16

用循环来处理吗?

补充说明: 在通用情况下,只上传文件的代码大概是这样的:

import os
for root, dirs, files in os.walk('path/to/local/dir'):
    for fname in files:
        full_fname = os.path.join(root, fname)
        ftp.storbinary('STOR remote/dir' + fname, open(full_fname, 'rb'))

显然,如果你只是保留文件名,就需要注意文件名冲突的问题。

撰写回答