【发布时间】:2011-10-14 14:11:34
【问题描述】:
问题是:
我有一个本地目录 '/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 复制它们。 这是一个合理的策略吗?感谢任何提示、cmets 和建议 [尤其是对于大量文件]。
【问题讨论】:
标签: python list compare directory ftplib