python:只将丢失的文件从FTP dir和subdir复制到本地dir和subdir

2024-04-25 17:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

问题在于:

我有一个本地目录'/local'和一个远程FTP目录'/remote'充满了子目录和文件。我想检查'/remote'的子目录中是否有新文件。如果有,则将它们复制到'/local'。在

问题是:

我使用的策略正确吗?这是不是太过分了,有没有比Python更快的方法呢? 免责声明:我是一个python00b正在努力学习。所以要温柔。。。=) 这就是我尝试过的:

在/local及其子目录中创建所有文件的列表。在

LocalFiles=[]
for path, subdirs, files in os.walk(localdir): 
    for name in files:                     
        LocalFiles.append(name)

做一些ftplib魔术,使用ftpwalk()并将其结果复制到表单列表中:

^{pr2}$

所以我有对应于每个文件的目录。 然后通过比较文件名列表来查看缺少哪些文件

missing_files= list(set(RemoteFiles[1]) - set(LocalFiles))  

一旦我找到他们的名字,我就试着找到那个名字对应的目录

for i in range(0,len(missing_files)):
    theindex=RemoteFiles[1].index(missing_files[i])

这样我就可以建立丢失文件及其目录的列表

MissingDirNFiles.append([remotefiles[0][theindex],remotefiles[1][theindex]])

所以我可以用ftp.retrbinary文件。 这是一个合理的策略吗?任何提示、评论和建议都是非常感谢的[特别是对于大量的文件]。在


Tags: 文件namein目录列表forremotelocal
1条回答
网友
1楼 · 发布于 2024-04-25 17:24:25

如果您同时获得本地和远程FTP目录的修改时间并将其存储在数据库中,则可以删除对新文件或修改文件的搜索。这将大大加快同步过程。在

相关问题 更多 >