Kimidake
程序哲学
2019-04-03 12:05

FTP网址浏览器可访问但代码总连接失败

  • python

利用Python的ftplib包连接网络服务器时总是连接失败
图片说明

但是用自己的浏览器可以访问
在网上查询说是FTP服务没开,于是按教程开了FTP服务,也在防火墙上去除了屏蔽,如图所示:

图片说明

但是依然没有用
网上说FTP的默认端口是21,我新建FTP的站点时默认服务端口是80,不知道有没有影响。
首次接触FTP功能,可能理解不透彻,一时找不到解决办法。
以下是我的代码,按照《Python核心编程第3版》的ftp相关章节的示例代码写的。

#! python3
# @Project:  pythondemo - getLatestFTP.py
# @Info   :  利用 ftp包从网站下载文件

import ftplib,os,socket

HOST = 'ftp.debian.org'
DIRN = 'debian/tools'
FILE = 'loadlin.exe'

def main():
    try:
        f = ftplib.FTP(HOST)
    except (socket.error, socket.gaierror):
        print('ERROR: cannot reach %s' % HOST)
        return
    print('***Connnected to host %s' % HOST)

    try:
        f.login()
    except ftplib.error_perm:
        print('ERROR: cannot login anonymously')
        f.quit()
        return
        print('***Logged in as "anonymous"')

    try:
        f.cwd(DIRN)
    except ftplib.error_perm:
        print('ERROR: cannot CD to %s' % DIRN)
        f.quit()
        return
    print('***Changed to %s folder' % DIRN)

    try:
        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 CMD' % FILE)

    f.quit()

if __name__ == '__main__':
    main()

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答