2017-04-03 63 views
0

下面我列出了当前的代码,我列出了整个文件夹,运行文件并下载它们。但是,此方法不支持遍历子文件夹和文件夹。遍历文件夹和子文件夹以获取每个目录中的文件FTP Python

def handleDownload(block): 
    file.write(block) 

ddir='U:/Test Folder' 
filedestination = 'U:/SWEModelConstruction/UnmaskedData' 
t1= [] 
t2= [] 
t3= [] 
os.chdir(ddir) 
ftp = FTP('sidads.colorado.edu') 
ftp.login() 

print ('Logging in.') 

directory = '/pub/DATASETS/NOAA/G02158/unmasked/' 

print ('Changing to ' + directory) 
ftp.cwd(directory) 
ftp.retrlines('LIST') 

print ('Accessing files') 

filenames = ftp.nlst() # get filenames within the directory 
print (filenames) 

for filename in filenames: 
    if filename not in ['.', '..']: 
     #Parse values from filename to use in os.path.join 
     for fname in filenames: 
      t1 = fname[16:20] 
      t2 = fname[20:22] 
      t3 = fname[22:24] 
      t4 = fname[16:24] 

      if not t1: continue 
     #use parsed values from filenamee to create folder and file pathss 
     local_folder = os.path.join(filedestination, t1,t2,t3) 
     local_filename = os.path.join(filedestination, t1,t2,t3,filename) 
     local_dat = os.path.join(filedestination, t1,t2,t3,'zz_ssmv11034tS__T0001TTNATS'+t4+'05HP001.dat.gz') 
     local_hdr = os.path.join(filedestination, t1,t2,t3,'zz_ssmv11034tS__T0001TTNATS'+t4+'05HP001.Hdr.gz') 
     hdrfile = ('zz_ssmv11034tS__T0001TTNATS'+t4+'05HP001.Hdr') 
     print (local_folder) 
     print (local_filename) 
     #check if folder for file exists and wether or not you have already it 
     if os.path.exists(local_folder) and not os.path.isfile(local_filename): 
      with open(local_filename, 'wb') as f_output: 
       ftp.retrbinary('RETR '+ filename, f_output.write) 
       ftp.quit() 
+0

做一个函数,每次你找到一个目录时递归调用自己 –

回答

-1

我指导你到Alvin's Big Data Notebook。在那里你会找到一个使用pysftp和walktree的例子。我不知道你使用的是什么FTP库,但如果你使用的是pysftp,这个例子应该有所帮助。关键是了解如何使用walktree

+0

不要发布只有链接的答案+该文章处理SFTP(尽管标题),所以它是不相关的 - OP使用ftplib(FTP),而不是pysftp( SFTP)+不要回答重复的问题,反而投票结束它们。 –

+0

@MartinPrikryl不要告诉我该怎么做!只是开玩笑,谢谢你的建议,但是,在未来你可能会考虑提供类似......“我不知道你是否知道这个,但你不应该做以下......”它会碰到更有启发性的事情。 –

相关问题