可以压缩文件(文件?),然后在上传后解压缩或上传并重命名唯一的选项?

时间:2013-11-22 00:55:57

标签: python python-2.7 zip unzip ftplib

我不知道这是否可能......

假设我想将test.html放入.zip存档中,然后使用ftplib上传文件,然后上传一次以便提取覆盖任何文件?

如果不可能是上传文件的最佳方式,那么重命名并覆盖原始文件名(我是否必须从ftp文件夹中删除原始test.html?)

有什么想法吗?

ftp_session = ftplib.FTP('ftp.website.com','admin@website.com','password123')
ftp_file = open('output.html','r')
ftp_session.cwd("/folder")
ftp_session.storlines('STOR output.html', ftp_file)
ftp_file.close()
ftp_session.quit()

1 个答案:

答案 0 :(得分:3)

FTP服务器不会解压缩你的文件,你必须在另一边运行一些东西。

如果您要替换单个文件,请将其上传为test.html.tmp,然后将其重命名为test.html。重命名(ftp操作)应该是原子的(文件系统明智的)并且将覆盖旧文件(实际上只是删除它并将名称指向新文件)。这样,读取文件的任何内容都将获得旧版本或新版本,但正确地说,没有阅读新文件一半的危险。

我认为使用CPanel你会运行解压缩,这很可能会打开文件进行写入,截断它然后填充内容。这不是原子的,有人可能会读取无效文件。另一方面,您可以编写一个远程运行的脚本,并按照您想要的方式执行操作。