目录:
- 函数释义
- 下载、上传文件
- 上传、下载文件/目录
- 异常处理
#函数释义
from ftplib import FTP # 加载ftp模块
ftp = FTP() # 获取FTP对象
ftp.set_debuglevel(2) # 打开调试级别2,显示详细信息
ftp.connect('IP', PORT) # 连接ftp,server和端口
ftp.login('user', 'password') # 登录用户
print(ftp.getwelcome()) # 打印欢迎信息
ftp.cmd('xxx/xxx') # 进入远程目录
bufsize = 1024 # 设置缓存区大小
filename='filename.txt' # 需要下载的文件
file_handle=open(filename, 'wb').write # 以写的模式在本地打开文件
file.retrbinary('RETR filename.txt', file_handle,bufsize) # 接收服务器上文件并写入本地文件
ftp.set_debuglevel(0) # 关闭调试模式
ftp.quit # 退出ftp
ftp相关的命令操作
ftp.cwd(pathname) # 设置FTP当前操作的路径
ftp.dir() # 显示目录下所有目录的信息
ftp.nlst() # 获取目录下的文件
ftp.mkd(pathname) # 新建远程目录
ftp.rmd(dirname) # 删除远程目录
ftp.pwd() # 返回当前所在位置
ftp.delete(filename) # 删除远程文件
ftp.rename(fromname, toname) #将fromname改为toname
ftp.storbinaly('STOR filename.txt',file_handel,bufsize) # 上传目标文件
ftp。retrbinary('RETR filename.txt',file_handel,bufsize) # 下载FTP文件
***FTP。quit()与FTP.close()的区别
- FTP.quit():发送QUIT命令给服务器并关闭掉连接。这是一个比较“缓和”的关闭连接的方式,但是如果服务器对QUIT命令返回错误时,则会抛出异常。
- FTP.close():单方面的关闭掉连接,不应该用在已经关闭的连接之后,例如不应用在FTP.quit()之后.
##例1
from ftplib import FTP
import time
import tarfile
from ftplib import FTP
def ftpconnect(host, username, password)
ftp = FTP()
ftp.connect(host, 21)
ftp.login(username, password)
return ftp
def downloadfile(ftp, remotepath, localpath):
bufsize = 1024
fp = open(localpath, 'wb')
ftp.retrbinary('RETR'+remotepath, fp.write, bufsize)
ftp.set_debuglevel(0)
fp.close()
def uploadfile(ftp, remotepath, localpath):
bufsize = 1024
fp = open(localpath, 'rb')
ftp.storbinary('STOR'+remotepath, fp, bufsize)
ftp.set_debuglevel(0)
fp.close()
if __name__ == '__main__':
ftp = ftpconnect("******", "***", "***")
downloadfile(ftp, "***", "***")
uploadfile(ftp, "***", "***")
ftp.quit()