问题是:
我有一个本地目录“/local”和一个包含子目录和文件的远程 FTP 目录“/remote”。我想检查'/remote'的子目录中是否有任何新文件。如果有,则将它们复制到'/local'。
问题是:
我使用了正确的策略吗?这完全是矫枉过正吗,有没有更快的pythonic方法来做到这一点?免责声明:我是一个尝试学习的python n00b。所以要温柔...... =)这就是我尝试过的:
在 /local 及其子目录中创建所有文件的列表。
LocalFiles=[]
for path, subdirs, files in os.walk(localdir):
for name in files:
LocalFiles.append(name)
做一些 ftplib 魔术,使用ftpwalk()并将其结果复制到表单列表中:
RemoteFiles=[['/remote/dir1/','/remote/dir1/','/remote/dir3/'],['file1.txt','file12.py','file3.zip']]
所以我有每个文件对应的目录。然后通过比较文件名列表来查看哪些文件丢失了,
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复制它们。这是一个合理的策略吗?任何提示、评论和建议都值得赞赏 [尤其是对于大量文件]。