python使用ftplib模块实现ftp目录嵌套下载

来源:互联网 发布:用php编辑九九乘法表 编辑:程序博客网 时间:2024/06/05 00:07


</pre><pre name="code" class="python"><pre name="code" class="python">import ftplib, osconn = ftplib.FTP()conn.connect('10.10.22.90')conn.login()dirname = "linux"def downloaddir(dirname):      os.mkdir(dirname)      os.chdir(dirname)      conn.cwd(dirname)      print("change diretocry into "+dirname+' to download....')      filelines = []      conn.dir(filelines.append)      filelines_bk = conn.nlst()      i = 0      for file in filelines:           if 'd' in file.split()[0]:               downloaddir(filelines_bk[i])               conn.cwd('..')               os.chdir('..')               print("back to upper directory to downlaod....")           else:               fd = open(filelines_bk[i], 'wb')               conn.retrbinary(‘RETR +filelines_bk[i], fd.write)           fd.close()           i += 1           print(filelines_bk[i] + 'download done....')      conn.quit()            



这里要解释一下使用filelines_bk和filelines的问题,dir()方法会返回恩间的详细信息,这里我们关注的是文件是否是目录,是目录 ‘d’ in file.split()[0] is True,否则就是非目录文件,但是我们这里没法通过dir()方法返回的信息提取出文件名,这里的原因有两点:

     (1)文件信息不是同样数据的tab或者空格分割

     (2)不排除文件名中包含空格(touch 'test file name' 这条命令据可建立一个包含空格的文件名)

这里我们通过nlst()方法获取文件名,nlst()返回的文件名顺序和dir()返回的文件名顺序是一样的

                                             
0 0