2017-04-03 234 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不要告訴我該怎麼做!只是開玩笑,謝謝你的建議,但是,在未來你可能會考慮提供類似......「我不知道你是否知道這個,但你不應該做以下......」它會碰到更有啓發性的事情。 –

相關問題