pytnon FTP編程:Python內建ftplib 模組,是用來對FTP伺服器進行上傳、下載操作,非常方便,使用起來也是行簡單。
如果我們熟悉了下面代碼編寫,怎麼把FTP伺服器上的檔案下載到本地,怎麼把檔案上傳到FTP伺服器上和批量FTP上傳、下載
就基本掌握了Python FTP編程。
1 #-*- coding:utf-8 -*-
2 #author:lhj588@live.cn
3 #C_Date: 2011.11.17
4 from ftplib import FTP
5 import socket
6 import os
7 #ftp伺服器位址
8 ftp_server = '127.0.0.1'
9 #ftp伺服器連接埠
10 ftp_port ='5433'
11 #ftp伺服器登入名稱稱
12 user_name = 'lhj588'
13 #ftp伺服器登入密碼
14 password = '888888'
15
16
17 """
18 描述:描述:簡單FTP檔案下載
19 """
20 def upload_ftp():
21 ftp = FTP()
22 #開啟調試層級2,顯示詳細資料
23 ftp.set_debuglevel(2)
24 #串連FTP伺服器
25 ftp.connect(ftp_server,ftp_port)
26 #登入FTP伺服器 如果匿名登入則用空串代替即可
27 ftp.login(user_name,password)
28
29 #顯示FTP伺服器歡迎資訊
30 print ftp.getwelcome()
31
32 dir_name = "/mysoft/tool/"
33 #選擇要上傳檔案存放伺服器的目錄
34 ftp.cwd(dir_name)
35 #設定緩衝塊大小
36 buf_size = 1024
37 #檔案名稱
38 file_name = "test.jpg"
39 #以寫入模式在本地開啟檔案
40 f_handler = open(file_name,'wb').write()
41 #接收FTP伺服器上檔案並寫入本地
42 ftp.retrbinary("RETR test.jpg",f_handler,buf_size)
43 #關閉調試
44 ftp.set_debuglevel(0)
45 #退出FTP伺服器
46 ftp.quit()
47 """
48 描述:簡單FTP檔案上傳
49 """
50 def down_ftp():
51 ftp = FTP()
52 #開啟調試層級2,顯示詳細資料
53 ftp.set_debuglevel(2)
54 #串連FTP伺服器
55 ftp.connect(ftp_server,ftp_port)
56 #登入FTP伺服器 如果匿名登入則用空串代替即可
57 ftp.login(user_name,password)
58 print ftp.getwelcome()
59 dir_name = "/mysoft/tool/"
60 ftp.cwd(dir_name)
61 buf_size = 1024
62 file_name = 'test.jpg'
63 #以讀模式在本地開啟檔案
64 f_handler = open(file_name,'rb')
65 #上傳檔案
66 ftp.storbinary('STOR server_test.jpg',f_handler,buf_size)
67 #關閉調試
68 ftp.set_debuglevel(0)
69 #關閉檔案
70 f_handler.close()
71 #退出FTP伺服器
72 ftp.quit()
73
74 """
75 描述:登入到FTP網站:ftp_server,併到tarDirTemp目錄下下載fileNameTempList列表中的檔案
76 參數:ftp_server:ftp網站名稱 user_name:ftp登入名稱 password:ftp密碼
77 tarDirTemp:下載的目標絕對目錄 fileNameTempList:要下載的檔案全名列表
78 傳回值:輸出:成功:0 失敗:1
79 """
80 def down_ftp_file(ftp_server, user_name, password, tarDirTemp,fileNameTempList):
81 try:
82 ftp = FTP(ftp_server)
83 ftp.login(user_name, password)
84 ftp.cwd(tarDirTemp)
85 ftp.set_debuglevel(2)
86 except socket.error as errobj:
87 print 'fpt error: %s can\'t download directory\'s file %s' % (errobj, tarDirTemp)
88 return False
89
90 for filename in fileNameTempList:
91 try:
92 #以寫入模式在本地開啟檔案
93 fp = open(filename, 'wb')
94 #從FTP中下載檔案
95 ftp.retrbinary('RETR '+filename, fp.write, 1024)
96 except IOError as ioerr:
97 print 'Error: [%s] %s' % (ioerr.errno, ioerr.strerror)
98 return False
99 except FTP.all_errors as errobj:
100 print 'fpt error: [%s] %s' % (errobj, filename)
101 if os.path.isfile(filename):
102 os.system('rm -f ' + filename)
103 continue
104 ftp.close()
105 return True
106
107 """
108 描述:測試方法
109 """
110 if __name__=="__main__":
111 upload_ftp()
112 down_ftp()
113 down_ftp_file(ftp_server,user_name,password,"/mysoft/tool/",['1.jpg','2.jpg','3.jpg'])