我制作了一个python程序,用于将用户输入的数据存储在sqlite数据库中。我想将它上传到ftp服务器。我尝试在python中使用ftplib。这里,使用该程序的所有用户的数据库文件名都是相同的。
在这里,我的问题是
如果user1将文件上传到ftp服务器,则下一个user2上传它。该文件被覆盖。我怎么能阻止这个?
公平地说:如何在ftpserver中停止覆盖现有文件并重命名当前(要上载的文件)文件。那么,我将拥有这两个文件?
答案 0 :(得分:0)
在上传之前使用ftplib.mlsd()列出目录。如果给定的文件已经存在,则不要上传。
小心这一点 - 如果两个人同时上传,用户A仍然可以上传并覆盖用户B.
答案 1 :(得分:0)
你的问题缺乏细节(其中包括:你正在使用什么版本的Python,你在使用什么操作系统,最重要的是复制文件的命名方案应该是什么)。
我假设每个客户端程序都使用名为" userdata.db"的SQLite文件。并且您要确保在FTP服务器上每个副本都由用户名标识。
所以用户:Pamar将在ftp服务器上拥有userdata.db.pamar,而User:Lucy将以userdata.db.lucy结束
(我希望你有办法确定没有两个用户有相同的名字,顺便说一下。)
我能想到的最简单的解决方案是:
使用shutil制作具有所需名称的数据库的临时(本地)副本,通过FTP传输,然后将其删除。
即,在User Pamar的情况下,您将拥有:
它不是很优雅,你会在(本地)文件系统上使用一些额外的空间,直到副本完成,如果userdata.db特别大(如果你那么大,那么这可能会有问题)可能不会首先使用sqlite)。