一行代码实现Python FTP服务器

133 投票
9 回答
207615 浏览
提问于 2025-04-16 11:48

有没有办法用一行命令在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.

撰写回答