[問題] FTP一直斷線

看板Python作者 (wuhaha13116)時間11年前 (2013/11/04 10:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位好, 在下是Python新手 這是我第一支用Python做的程式,還在學中 因為想要連結FTP上的資料直接跟我Local端的一個資料夾位址Mapping 若Local沒有該檔案就直接下載並用7-zip解壓縮 但非常苦惱FTP一直斷線就不下載了 想要用try,except讓他重新連結在下載他也不會進去迴圈 卡這個問題已經卡了兩個禮拜 也很認真在找GOOGLE上的資源 可能有些地方因為不太懂,自己程式也不夠強.無法活用在自己的程式上 也有根據網路上的一些意見修改主動模式與被動模式 但兩種都會斷線 只是ftp.set_pasv(1)似乎比ftp.set_pasv(0)可以撐得比較久 希望能找到好方法可以順利重新續傳也可以學習到新東西 我已經想不到該怎麼辦去動哪個部分了....T_T 謝謝各位費心看完~~ ==========================程式碼如下================== from ftplib import FTP import os import zipfile import subprocess import time ftp=FTP('FTP位址','帳號','密碼') dirs="FTP想連結的資料夾位址" ftp.cwd(dirs) ftp.set_pasv(1) filenames = [] ftp.retrlines('NLST', filenames.append) print (filenames) a=0 for filename in filenames: if os.path.exists('C:\\test\\' + filename): try: lsize= os.path.getsize('C:\\test\\' + filename) if lsize==0: local_filename = os.path.join('C:\\','test', filename) file = open(local_filename, 'wb') try: ftp.retrbinary('RETR '+ filename, file.write) except ftplib.all_errors: print ('Error FTP Connect') ftp.close() ftp=FTP('FTP位址','帳號','密碼') dirs="FTP想連結的資料夾位址" ftp.cwd(dirs) ftp.set_pasv(1) filenames = [] ftp.retrlines('NLST', filenames.append) a=a+1 file.close() print(filename+' download data OK') cmd1='"C:\\Program Files\\7-Zip\\7z"' " e -y " "C:\\test\\"+filename+ " -o""C:\\test_rar" unzip_file=os.system(cmd1) else: print (filename+' already download before ',lsize ) except ValueError: print (filename+' Error') time.sleep(3) traceback.prin_exc else: try: local_filename = os.path.join('C:\\','test', filename) file = open(local_filename, 'wb') ftp.retrbinary('RETR '+ filename, file.write) file.close() cmd1='"C:\\Program Files\\7-Zip\\7z"' " e -y " "C:\\test\\"+filename+ " -o""C:\\test_rar" unzip_file2=os.system(cmd1) print(filename+' Unzip data OK') except ValueError: print (filename+' Error') time.sleep(3) traceback.prin_exc ftp.close() print (a) =================程式碼結束================ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 106.187.126.4
文章代碼(AID): #1ITmUQiw (Python)