作者wuhaha13116 (wuhaha13116)
看板Python
标题[问题] FTP一直断线
时间Mon Nov 4 10:33:59 2013
各位好,
在下是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