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'])