python - 使用pyftpdlib进行文件传输
我正在用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
有什么建议吗?
1 个回答
1
你可以试试这个:
conn = ftplib.FTP()
conn.connect('127.0.0.1', 2121)
conn.login('user','12345')
这里的FTP()是一个创建连接的工具,它只需要主机名或者IP地址。如果你不传任何东西,然后用connect()来设置连接,你可以传一个包含(IP,端口)的组合。这应该能解决问题。