-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ftp_download02.py
89 lines (82 loc) · 2.9 KB
/
ftp_download02.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import os
from ftplib import FTP
import time
from datetime import datetime
import glob
import shutil
def run_ftp_download():
try:
ftp = FTP()
#ftp.set_debuglevel(2)
ftp.connect('223.200.97.241', 21)
ftp.login('download02', 'download02')
listing = []
ftp.retrlines("LIST", listing.append)
totalNum= len(listing)
count=1
downloadCnt=0
for val in listing:
print('interval 進度: %d/%d'%(count,totalNum))
try:
#print(val)
words = val.split(None, 8)
#print(words)
folderName = words[-1].lstrip()
#print(words[-1])
print('foldername:%s'%(folderName,))
if folderName.find('gpu')>=0:
continue
if folderName.find('done')<0:
continue
D=ftp.nlst(folderName)
ftp.cwd(folderName)
saveFolder = 'ftp-download02_temp'
finishFolder = 'ftp-download02'
if not os.path.exists(saveFolder):
os.makedirs(saveFolder)
for d in D:
try:
tmp=d.split('/')
filename=tmp[1]
print(filename)
# download the file
local_filename = os.path.join(saveFolder, filename)
print(local_filename)
lf = open(local_filename, "wb")
#print('download count:%d'%(downloadCnt,))
#print('save ftp file strart')
ftp.retrbinary("RETR " + filename, lf.write, 8*1024)
#print('save ftp file end')
lf.close()
downloadCnt += 1
except Exception as e:
print('file save error')
print(e)
ftp.close()
break
ftp.cwd('..')
ftp.rename(folderName,folderName+'_gpu')
try:
if not os.path.exists(finishFolder):
os.rename(saveFolder,finishFolder)
except Exception as e:
print(e)
ftp.close()
break
except Exception as e:
print('error')
print(e)
ftp.close()
break
count+=1
ftp.close()
except:
ftp.close()
def func():
try:
print('開始FTP下載,現在時間%s'%(datetime.now().strftime("%H:%M:%S"),))
run_ftp_download()
except Exception as e:
print(e)
if __name__ == '__main__':
func()