python -m的那些实用功能

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编码,我们只需要修改一下源码,重新编译下即可:

  1. 找到json.tool模块的位置:
    	>>> import json.tool
    	>>> json.tool.__file__
    	'/usr/lib/python2.7/json/tool.pyc'
    
    去到这个目录,发现tool.py源文件:
    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
    
  2. 现在,使用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
    
  3. 验证:现在就OK了:
    $ echo '{"name": "寂寞", "age": "100"}' | python -m json.tool
    {
        "age": "100",
        "name": "寂寞"
    }
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值