使用python共享文件
来源:互联网 发布:江彬和钱宁 知乎 编辑:程序博客网 时间:2024/05/17 23:39
当我们想要将自己电脑上面当文件共享出去时,往往会通过设置共享文件夹或者使用第三方软件等方式来实现。这么做的缺点在于,操作繁琐,而且不同系统下的操作方式也不一样,很不方便。那有没有一种通用的,快捷的共享文件方式呢?答案是肯定的,通过python,我们可以轻易的实现这一点。
python -m SimpleHTTPServer [port]
上述命令可以将当前目录作为一个文件服务器,服务器地址为你的ip:[port]。port参数可不填,默认端口为8000。因此,在同一局域网下,别人就可以通过你的ip:[port]这个地址访问到你当前文件夹下的所有文件。
那每次都要输入这个命令,还是很麻烦的。为此,我们可以给这命令设置一个简单又好记的别名,就叫它share好了。
mac/linux下:
打开 ~/.bashrc文件,在最后一行加上:
alias share="python -m SimpleHTTPServer"
保存退出后,执行source ~/.bashrc即可。以后再想共享文件,只需要cd到指定目录,输入share命令就可以了,是不是很方便呢!
windows用户设置别名稍微有点麻烦:
在你喜欢的地方新建一个文件,将它命名为env.bat或者其他你喜欢的名字.bat,输入如下内容:
@echo offdoskey share=python -m SimpleHTTPServer
然后在注册表HKEY_CURRENT_USER\Software\Microsoft\Command Processor下面加一项AutoRun,把值设为你的脚本路径。
或者新建文件auto.reg,输入以下命令:
Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]"AutoRun"="%USERPROFILE%\\env.bat"
具体可参考windows系统如何给命令起别名?上述内容操作完毕后,即可像mac/linux系统一样,在指定目录输入share命令即可共享该文件夹下的所有内容。
通过这种方式最终在控制台显示的内容为: Serving HTTP on 0.0.0.0 port 8000
如果给别人共享文件,此时还需要另外查询一次本机ip,比较繁琐。
python -m SimpleHTTPServer [port]
这行命令调用了SimpleHTTPServer模块的main()方法。我们进入到该类中:
def test(HandlerClass = SimpleHTTPRequestHandler, ServerClass = BaseHTTPServer.HTTPServer): BaseHTTPServer.test(HandlerClass, ServerClass)if __name__ == '__main__': test()
发现它最终调用了BaseHTTPServer类的test方法,继续跟进去:
def test(HandlerClass = BaseHTTPRequestHandler, ServerClass = HTTPServer, protocol="HTTP/1.0"): """Test the HTTP request handler class. This runs an HTTP server on port 8000 (or the first command line argument). """ if sys.argv[1:]: port = int(sys.argv[1]) else: port = 8000 server_address = ('', port) HandlerClass.protocol_version = protocol httpd = ServerClass(server_address, HandlerClass) sa = httpd.socket.getsockname() print "Serving HTTP on", sa[0], "port", sa[1], "..." httpd.serve_forever()
可以看到我们控制台打印的内容就在代码的倒数第二行。下述代码可以获取本机ip:
myname = socket.getfqdn(socket.gethostname())myaddr = socket.gethostbyname(myname)print myaddr
因此我们只需要将代码修改为下述这种即可:
def test(HandlerClass = BaseHTTPRequestHandler, ServerClass = HTTPServer, protocol="HTTP/1.0"): """Test the HTTP request handler class. This runs an HTTP server on port 8000 (or the first command line argument). """ if sys.argv[1:]: port = int(sys.argv[1]) else: port = 8000 server_address = ('', port) HandlerClass.protocol_version = protocol httpd = ServerClass(server_address, HandlerClass) myname = socket.getfqdn(socket.gethostname()) myaddr = socket.gethostbyname(myname) sa = httpd.socket.getsockname() # print "Serving HTTP on", sa[0], "port", sa[1], "..." print "Serving HTTP on", myaddr, "port", sa[1], "..." httpd.serve_forever()
此时再在控制台输入”share”命令,即可打印本机ip。
- 使用python共享文件
- 使用 Python SimpleHTTPServer 快速共享文件
- 使用 Python SimpleHTTPServer 快速共享文件
- 【脚本】使用 Python SimpleHTTPServer 快速共享文件
- Python项目8:使用XML-RPC进行文件共享
- python基础 27章 使用XML_RPC进行文件共享
- hgfs共享使用文件
- hgfs共享使用文件
- 使用FileProvider共享文件
- 使用WinSCP共享文件
- 使用FileProvider共享文件
- Python快速实现文件共享
- python简易web共享文件
- 如何使用BQYAHOO共享文件
- 使用文件映射共享数据
- 局域网使用Ftp共享文件
- window共享文件centos使用
- 使用文件共享实现IPC
- Java系统环境变量配置
- android textview 跑马灯效果
- 23种设计模式(21)-访问者模式
- Codeforces #835C: Star Sky 题解
- 1042. 字符统计(20)
- 使用python共享文件
- windows下搭建cordova用于android开发
- oracle中的exists 和not exists 用法
- JAVA字符串转日期或日期转字符串
- Android开发APP应该忽略的文件
- db常用命令
- 哈希函数的构造及注意事项
- Java跳出多重嵌套循环
- 二维数组中的查找