首页 > 解决方案 > 使用 ftplib 访问 FTP URL

问题描述

我在带有 ftplib 的 Windows 中使用 python 来访问 ftp5.xyz.eu 的文件夹。

该文件夹是文件夹“foo bar”中的 ftp5.xyz.eu 中的“baz”。所以:ftp5.xyz.eu/foo bar/baz

我在 ftp5.xyz.eu 成功连接,但是当我将整个路径写入文件夹时,它给了我一个错误:

from ftplib import FTP

#domain name or server ip:
ftp = FTP('ftp5.xyz.eu/foo%20bar')
...
ftp.dir()

错误如下:

  File "C:\Users\mirel.voicu\AppData\Local\Programs\Python\Python37\lib\ftplib.py", line 117, in __init__
    self.connect(host)
  File "C:\Users\mirel.voicu\AppData\Local\Programs\Python\Python37\lib\ftplib.py", line 152, in connect
    source_address=self.source_address)
  File "C:\Users\mirel.voicu\AppData\Local\Programs\Python\Python37\lib\socket.py", line 707, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "C:\Users\mirel.voicu\AppData\Local\Programs\Python\Python37\lib\socket.py", line 748, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

标签: pythonpython-3.xftpftplib

解决方案


这与空间无关。FTP构造函数的第一个参数是host-主机名IP 地址- 而不是URL

所以应该是:

ftp = FTP('ftp5.xyz.eu')

如果要列出子文件foo bar夹中的文件,请执行以下操作:

ftp.cwd('foo bar')      
ftp.dir()

或者

ftp.dir('foo bar')

推荐阅读