一行代码实现Python FTP服务器
有没有办法用一行命令在Python里快速搭建一个简单的FTP服务器?我想要一个快速又临时的方法,把文件传到Linux电脑上,而不需要安装额外的FTP服务器。最好是用Python自带的库,这样就不用再安装其他东西了。
9 个回答
49
你为什么不试试用一行代码来启动一个HTTP服务器呢?
python -m SimpleHTTPServer 8000
这个命令会通过HTTP在8000端口上提供当前工作目录的内容。
如果你使用的是Python 3,那你应该写
python3 -m http.server 8000
可以查看SimpleHTTPServer模块的文档(适用于2.x版本),以及http.server的文档(适用于3.x版本)。
顺便说一下,在这两种情况下,端口参数都是可选的。
126
看看Giampaolo Rodola的pyftpdlib吧。这是一个非常棒的Python FTP服务器。它被谷歌的Chromium(他们的浏览器)和Bazaar(一个版本控制系统)使用。它是Python中对RFC-959(也就是FTP服务器实现规范)的最完整实现。
安装方法:
pip3 install pyftpdlib
在命令行中输入:
python3 -m pyftpdlib
另外,你可以使用'my_server.py':
#!/usr/bin/env python3
from pyftpdlib import servers
from pyftpdlib.handlers import FTPHandler
address = ("0.0.0.0", 21) # listen on every IP on my machine on port 21
server = servers.FTPServer(address, FTPHandler)
server.serve_forever()
如果你想要更复杂的例子,可以去他们的网站看看。
如果想查看命令行选项的列表,可以输入:
python3 -m pyftpdlib --help
注意,如果你想要覆盖或使用标准的FTP端口,你需要管理员权限(比如使用sudo)。
157
这是一个必不可少的 Twisted 示例:
twistd -n ftp
还有可能会很有用:
twistd ftp --help
Usage: twistd [options] ftp [options].
WARNING: This FTP server is probably INSECURE do not use it.
Options:
-p, --port= set the port number [default: 2121]
-r, --root= define the root of the ftp-site. [default:
/usr/local/ftp]
--userAnonymous= Name of the anonymous user. [default: anonymous]
--password-file= username:password-style credentials database
--version
--help Display this help and exit.