python -m lib,一句简单的命令加一个模块,除了可以自己写,python自带的现成功能也很强大和实用,本文将不断整理一些常用功能。
1.简单的局域网文件共享
1.在需要共享的文件夹下运行:
$ python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
192.168.1.100 - - [27/Nov/2017 11:30:19] "GET / HTTP/1.1" 200 -
2.然后查询自己电脑的ip:
$ ip addr
3.其他设备(windows,android等)可以在浏览器访问:
http://your ip:8000
当然可以指定端口:
python -m http.server 9000
基于http协议,跨多个平台。
2.命令行json格式化
# 文件
[jimo@jimo-pc elasticsearch-6.0.0]$ python -m json.tool p.json
{
"name": "jimo",
"age": "100"
}
# 文本
[jimo@jimo-pc elasticsearch-6.0.0]$ echo '{"name": "jimo", "age": "100"}' | python -m json.tool
{
"name": "jimo",
"age": "100"
}
读者反应中文会被编码:
$ echo '{"name": "寂寞", "age": "100"}' | python -m json.tool
{
"age": "100",
"name": "\u5bc2\u5bde"
}
这个原因是json模块默认使用ascii编码,我们只需要修改一下源码,重新编译下即可:
- 找到json.tool模块的位置:
去到这个目录,发现tool.py源文件:>>> import json.tool >>> json.tool.__file__ '/usr/lib/python2.7/json/tool.pyc'
jack@jack:/usr/lib/python2.7/json$ ll 总用量 140 drwxr-xr-x 2 root root 4096 7月 14 00:05 ./ drwxr-xr-x 27 root root 24576 7月 14 00:05 ../ -rw-r--r-- 1 root root 13698 11月 28 2018 decoder.py -rw-r--r-- 1 root root 11936 7月 14 00:05 decoder.pyc -rw-r--r-- 1 root root 16399 11月 28 2018 encoder.py -rw-r--r-- 1 root root 13687 7月 14 00:05 encoder.pyc -rw-r--r-- 1 root root 14721 11月 28 2018 __init__.py -rw-r--r-- 1 root root 13916 7月 14 00:05 __init__.pyc -rw-r--r-- 1 root root 2297 11月 28 2018 scanner.py -rw-r--r-- 1 root root 2223 7月 14 00:05 scanner.pyc -rw-r--r-- 1 root root 997 11月 28 2018 tool.py -rw-r--r-- 1 root root 1290 7月 14 00:05 tool.pyc
- 现在,使用root权限修改tool.py,在json.dump这一行加上
ensure_ascii=False
参数:
然后重新编译:with outfile: json.dump(obj, outfile, sort_keys=True,ensure_ascii=False, indent=4, separators=(',', ': ')) outfile.write('\n')
$ sudo python -m py_compile tool.py
- 验证:现在就OK了:
$ echo '{"name": "寂寞", "age": "100"}' | python -m json.tool { "age": "100", "name": "寂寞" }