使用python下载文件_python2 利用ftp下载文件

799967027.png登陆 ftp 服务器下载文件import os

def get_ftp_server_file(cls, dir_ftp, filename, host, port, username, password):

"""

登陆 ftp 服务器下载文件(保存到项目根目录)

:param dir_ftp: 目标文件在 ftp 服务器上路径;

:param filename: 目标文件名;

:param host: ftp 服务器地址(ip/域名);

:param port: ftp 服务器端口号,一般是 21;

:param username: 登陆 ftp 服务器时的用户名

:param password: 登陆 ftp 服务器时的密码

:return boolean

"""

if os.path.exists(filename):

logging.info(u'FTP:文件 ' + filename + u' 已经存在!该文件将被重复写入')

# 开始连接

try:

f = ftplib.FTP()

f.connect(host=host, port=port)

except (socket.error, socket.gaierror), e:

msg = u"FTP: 不能连接到ftp服务器({}),请检查ftp服务器是否正常工作!".format(host)

logging.info(msg)

raise UserError(msg)

# 登录

try:

f.login(user=username, passwd=password)

except ftplib.error_perm, e:

msg = u"Ftp: 不能登录到FTP服务器,请检查账户名和密码及端口是否正确!"

f.quit()

raise UserError(msg)

msg = u"用户{}已登录ftp服务器{}".format(username, host)

logging.info(msg)

try:

f.cwd(dir_ftp)

except ftplib.error_perm, e:

msg = u"FTP:路径{}在ftp服务器{}中无法打开!".format(dir_ftp, host)

logging.info(msg)

f.quit()

raise UserError(msg)

# 获取文件

f.set_pasv(0)

try:

logging.info(u'>>>>>>>>>>>>下载文件 {} ... ...'.format(filename))

buf_size = 999999

f.retrbinary('RETR {}'.format(filename), open(filename, 'wb').write, buf_size)

except Exception as e:

msg = u"FTP:读取文件失败, 文件{}在{}中!".format(filename, host)

logging.info(e)

os.unlink(filename)

logging.info(msg)

raise UserError(msg)

else:

os.getcwd()

# 获取完成后删除ftp中的远程文件

# f.delete(filename)

f.quit()

logging.info(u">>>>>>>>>>>>成功下载文件:{},保存在项目根目录!".format(filename))

return True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值