# -*- coding: utf-8 -*-
# python:2.x
__author__ = ‘Administrator‘
from ftplib import FTP#加载
#方法或者属性
# ftp=FTP()#变量
# ftp.set_debuglevel(2)#调试级别为2,显示详细信息
# ftp.connect(‘IP‘,‘port‘)#连接ftp服务器和端口
# ftp.login(‘user‘,‘password‘)#连接帐号及密码
# print ftp.getwelcome()#显示信息
# ftp.cmd(‘path‘)#更改远程目录
# bufsize=1024#设置缓冲区大小
# file_handle=open(‘a.txt‘,‘wb‘).writable#以读写模式在本地打开文件
# ftp.retrbinary(‘RETR FILENAME.txt‘,file_handle,bufsize)#接收服务器上文件并写入到本地文件中
# ftp.set_debuglevel(0)#退出调试模式
# ftp.quit#退出
# ftp.cwd(‘pathname‘)#设置当前目录
# ftp.dir()#显示目录文件信息
# ftp.nlst()#获取目录下的文件
# ftp.mkd(‘pathname‘)#新建远程目录
# ftp.pwd()#返回当前所在位置
# ftp.rmd(‘pathname‘)#删除远程目录
# ftp.delete(‘pathname‘)#删除远程文件)
# ftp.rename(‘path1‘,‘path2‘)#重名
# ftp.storbinary(‘stop finename.txt‘,file_handle,bufsize)#上传目录文件
# ftp.retrbinary(‘retr finename.txt‘,file_handle,bufsize)#下载ftp文件
#例子
ftp=FTP()
timeout=30
port=21
ftp.connect(‘192.168.1.111‘,port,timeout)
ftp.login(‘UserName‘,‘888888‘)
print ftp.getwelcome()
ftp.cwd(r‘F:\ftp‘)
l=ftp.nlst()
for name in l:
print name#打印名字
path=r‘F:\ftp‘+name
f=open(path,‘wb‘)
filename=‘RETR‘+name
ftp.retrbinary(‘STOP‘+filename,open(path,‘rb‘))
ftp.quit()
完整模块(是核心编程书籍上的例子)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import ftplib
import os
import socket
HOST = ‘ftp.mozilla.org‘
DIRN = ‘pub/mozilla.org/webtools‘
FILE = ‘bugzilla-3.6.7.tar.gz‘
def main():
try:
f = ftplib.FTP(HOST)
except (socket.error, socket.gaierror):
print ‘ERROR:cannot reach " %s"‘ % HOST
return
print ‘***Connected to host "%s"‘ % HOST
try:
f.login()
except ftplib.error_perm:
print ‘ERROR: cannot login anonymously‘
f.quit()
return
print ‘*** Logged in as "anonymously"‘
try:
f.cwd(DIRN)
except ftplib.error_perm:
print ‘ERRORL cannot CD to "%s"‘ % DIRN
f.quit()
return
print ‘*** Changed to "%s" folder‘ % DIRN
try:
#传一个回调函数给retrbinary() 它在每接收一个二进制数据时都会被调用
f.retrbinary(‘RETR %s‘ % FILE, open(FILE, ‘wb‘).write)
except ftplib.error_perm:
print ‘ERROR: cannot read file "%s"‘ % FILE
os.unlink(FILE)
else:
print ‘*** Downloaded "%s" to CWD‘ % FILE
f.quit()
return
if __name__ == ‘__main__‘:
main()