我正在使用python进行文件传输。我已经进行了很多搜索,但是仍然没有找到使用pyftpdlib的工作于ftp客户端服务器的简单演示。我认为该库非常有用,但我不知道如何开始使用它。

非常感谢您的帮助!

编辑:
好的,我按照教程进行了。我的目标是首先能够在本地计算机中发送/接收文件。

我运行basic_ftpd.py并得到以下信息:

[I 14-07-09 15:08:27] >>> starting FTP server on 127.0.0.1:2121, pid=7000 <<<
[I 14-07-09 15:08:27] poller: <class 'pyftpdlib.ioloop.Select'>
[I 14-07-09 15:08:27] masquerade (NAT) address: None
[I 14-07-09 15:08:27] passive ports: None


然后我运行winnt_ftpd.py并收到错误消息:

Traceback (most recent call last):
  File "***\lib\winnt_ftpd.py", line 41, in <module>
    from pyftpdlib.authorizers import WindowsAuthorizer
ImportError: cannot import name WindowsAuthorizer


假设我要在C:/ share和本地地址中发送一些文件,我认为它应该是127.0.0.1:2121或localhost:2121。然后从客户端我想获取目录列表:

import ftplib

ftp = ftplib.FTP("127.0.0.1:2121")
ftp.login("user", "12345")

data = []

ftp.dir(data.append)

ftp.quit()

for line in data:
    print "-", line


但这不起作用,出现以下错误:

Traceback (most recent call last):
  File "C:\Users\***\src\client1.py", line 8, in <module>
    ftp = ftplib.FTP("127.0.0.1:2121")
  File "C:\Python27\lib\ftplib.py", line 117, in __init__
    self.connect(host)
  File "C:\Python27\lib\ftplib.py", line 132, in connect
    self.sock = socket.create_connection((self.host, self.port), self.timeout)
  File "C:\Python27\lib\socket.py", line 551, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 11004] getaddrinfo failed


编辑:
我变了

ftp = ftplib.FTP("127.0.0.1:2121")




ftp = ftplib.FTP("127.0.0.1")


然后我得到这个错误:

socket.error: [Errno 10061] No connection could be made because the target machine actively refused it


有什么建议吗?

最佳答案

尝试一下:

conn = ftplib.FTP() conn.connect('127.0.0.1', 2121) conn.login('user','12345')

FTP()构造函数仅接受主机名或IP地址,相反,如果不传递任何内容,然后使用connect()进行全部配置,则可以传递具有(IP,端口)的元组
这应该可以解决问题

09-30 23:56
查看更多