使用python进行FTP上传,遇到rb模式问题

时间:2017-12-19 16:05:49

标签: python zipfile ftplib

我有一个要上传的zip文件。我知道如何上传它。我用“Rb”模式打开文件。当我想提取我上传的zip文件时,我收到一个错误,ZIP存档中的文件消失了,我认为这是因为“Rb”模式。我不知道如何提取我上传的文件。

以下是代码:

filename="test.zip"
ftp=ftplib.FTP("ftp.test.com")
ftp.login('xxxx','xxxxx')
ftp.cwd("public_html/xxx")
myfile=open("filepath","rb")
ftp.storlines('STOR ' + filename,myfile)
ftp.quit()
ftp.close()

1 个答案:

答案 0 :(得分:0)

您的代码目前正在使用ftp.storlines(),用于ASCII文件。

对于ZIP文件等二进制文件,您需要使用ftp.storbinary()代替:

import ftplib

filename = "test.zip"    

with open(filename, 'rb') as f_upload:
    ftp = ftplib.FTP("ftp.test.com")
    ftp.login('xxxx', 'xxxxx')
    ftp.cwd("public_html/xxx")
    ftp.storbinary('STOR ' + filename, f_upload)
    ftp.quit()
    ftp.close()    

在ZIP文件上使用ASCII模式时,会导致文件无法使用。