共享文件夹或者文件除了上一篇文章中所说的Http方式,还有FTP方式,即搭建一个FTP服务器,共享文件夹,让别人访问。
安装pyftpdlib:
Python并没有内置一个FTP服务器,所以需要第三方模块的支持。可以使用pyftpdlib,其官网上有详细的介绍。
在命令行输入下面的语句进行安装:
pip install pyftpdlib
一句话共享:
在选定目录的命令行下输入下面的命令即可将该目录共享出去。
python -m pyftpdlib -p 21
其默认的端口是21,可以修改成其他的端口。
启动后,可以在浏览器中输入“ftp://localhost:21”即可查看当前文件夹下的文件。
局域网共享:
当然,上面的方式只能在本地访问文件夹(不知道我这样理解对不对),于是,需要写一个稍微复杂一点的脚本。
下面的脚本可以让局域网中的其它机器访问你共享的文件夹。
# -*- coding:utf-8 -*-
import os
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
def main():
# Instantiate a dummy authorizer for managing 'virtual' users
authorizer = DummyAuthorizer()
# Define a new user having full r/w permissions and a read-only
# anonymous user
authorizer.add_user('user', '12345', '.', perm='elradfmwM')
# authorizer.add_anonymous(os.getcwd())
# Instantiate FTP handler class
handler = FTPHandler
handler.authorizer = authorizer
# Define a customized banner (string returned when client connects)
handler.banner = "pyftpdlib based ftpd ready."
# Specify a masquerade address and the range of ports to use for
# passive connections. Decomment in case you're behind a NAT.
#handler.masquerade_address = '151.25.42.11'
#handler.passive_ports = range(60000, 65535)
# Instantiate FTP server class and listen on 0.0.0.0:2121
address = ('192.168.61.66', 2121)
server = FTPServer(address, handler)
# set a limit for connections
server.max_cons = 256
server.max_cons_per_ip = 5
# start ftp server
server.serve_forever()
if __name__ == '__main__':
main()
运行上面的代码,即可完成共享。此时,在自己的浏览器或者同局域网的别人的电脑的浏览器中输入"ftp://192.168.61.66:2121/"即可进行访问。
当然,这里添加了用户user,密码是12345,你可以自己修改,如果不需要登录,可以选择匿名登录(将添加用户的代码给注释掉,同时将其下面一行匿名的代码给取消掉注释即可)。
运行截图如下:
后记:
这一篇和上一篇介绍的Http共享我都尝试了,均可以做到通局域网内访问,非常方便简单,以后需要共享文件时就不用建群共享那么麻烦了。