几个提高工作效率的Python内置小工具
專 欄
❈本文作者:赖明星
博客地址:
https://www.zhihu.com/people/mingxinglai❈
在这篇文章里,我们将会介绍4个Python解释器自身提供的小工具。这些小工具在笔者的日常工作中经常用到,减少了各种时间的浪费,然而,却很容易被大家忽略。每当有新来的同事看到我这么使用时,都忍不住感叹,原来Python还隐藏了这么好用的功能。下面就来看一下Python自带的几个小工具
一、1秒钟启动一个下载服务器
在实际工作中,时不时会有这样的一个需求:将文件传给其他同事。将文件传给同事本身并不是一个很繁琐的工作,现在的聊天工具一般都支持文件传输。但是,如果需要传送的文件较多,那么,操作起来就会比较麻烦。此外,如果文件在远程的服务器上,你要将文件传给同事,则需要先将远程服务器的文件下载到本地,然后再通过聊天工具传给同事。再或者,你并不是特别清楚要传哪几个文件给同事,所以,你们需要进行来回的交流。交流的时间成本是比较高的,会降低办事效率。此时,你们需要更加高效的方法。
这个时候,如果你知道Python内置了一个下载服务器就能够显著提升效率了。例如,你的同事要让你传的文件位于某一个目录下,那么,你可以进入这个目录,然后执行下面的命令启动一个下载服务器:
python -m SimpleHTTPServer
在Python 3中,由于对系统库进行了重新整理,因此,使用方式会有不同:
python -m http.server
执行上面的命令就会在当前目录下启动一个文件下载服务器,默认打开8000端口。这个时候,你只需要将IP和端口告诉同事,让同事自己去操作即可,非常的方便高效。
例如,笔者在自己的服务器上的`~/temp`目录下启动一个下载服务器:
$ ls
app.py depoly.sh fabfile.py
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
使用浏览器访问Python启动的下载服务器,可以看到一个类似于FTP下载的界面。这个时候,点击文件下载即可,降低了大家的沟通成本。
从工作原理角度来说,执行上面的命令,只是启动了一个Python内置的web服务器。如果当前目录下存在一个名为index.html的文件,则默认会显示该文件的内容;如果当前目录下不存在这样一个文件,则默认显示当前目录下的文件列表,也就是大家看到的下载服务器。
二、字符串转换为JSON
JSON是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。由于JSON的诸多优点,已经广泛使用在各个系统中,因此,我们经常会有将JSON字符串转换为JSON对象的需求。
例如,在笔者的工作过程中,我们的系统会调用底层服务的API,底层服务的API一般都是以JSON的格式返回,为了便于问题追踪,我们会将API返回的JSON转换为字符串记录到日志文件中。当需要分析问题时,就有可能需要将日志文件中的JSON字符串扣出来进行分析,这个时候,需要将一个JSON字符串转换为JSON对象以便于阅读。
这个需求是如此的常见,以至于使用搜索引擎搜索"JSON",处于搜索结果的第一项便是"在线JSON格式化工具"。除了打开浏览器,使用在线JSON格式化工具以外,我们也可以使用命令行终端的Python解释器来解析JSON串,如下所示:
$ echo '{"job": "developer", "name": "lmx", "sex": "male"}' | python -m json.tool {
"job": "developer", "name": "lmx", "sex": "male"
}
使用命令行解释器解析JSON串非常的方便,而且,为了便于阅读,该工具还会自动将转换的结果进行对齐和格式化,如下所示:
$ echo '{"address": {"province": "zhejiang", "city": "hangzhou"}, "name": "lmx", "sex": "male"}' | python -m json.tool {
"address": {
"city": "hangzhou", "province": "zhejiang"
}, "name": "lmx", "sex": "male"
}
三、检查第三方库是否正确安装
安装完Python的第三方库以后,如何确认这个库已经正确安装了呢?这个问题的答案很简单,只需要尝试进行import导入,如果导入没有任何错误,则认为安装成功了。
lmx@host1:~/temp$ python
Python 2.7.13 (default, Feb 10 2017, 20:22:22)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
>>>
验证Python的第三方库是否安装成功,本身也是一件很简单的事情,但是,如果我们使用脚本对大批量的服务器进行自动部署,又应该如何验证第三方库安装成功了呢?肯定不能登录每一台服务器进行验证,这个时候,我们可以使用Python解释器的`-c`参数快速的执行import语句,如下所示:
lmx@host1:~/temp$ python -c "import paramiko"
使用这种验证方式,不但比交互式的验证更加高效,更重要的是,能够在脚本中实现对于远程服务器的验证操作。
四、使用Python解压zip压缩包
如果读者是一名具有关工作经验的工程师,一定遇到过要在Linux下解压zip格式压缩包的需求。Linux下一般都是用tar命令创建和读取压缩包,但是,tar命令并不支持zip格式的压缩包。为了读取zip格式的压缩包,需要使用unzip,而大部分操作系统都没有安装unzip,因此,每次需要在Linux下解压zip格式的压缩包都会比较麻烦。
除了安装unzip工具和编写Python脚本解压zip格式的压缩包以外,也可以使用zipfile模块提供了命令行接口。读者以后可以在Linux下,使用Python命令创建和解压zip格式的压缩包。zipfile模块提供的命令行接口包含以下几个选项:
- -l <zipfile> 显示zip格式压缩包中的文件列表
- -c 创建zip格式压缩包
- -e 提取zip格式压缩包
- -t 验证文件是一个有效的zip格式压缩包
下面的命令使用Python的zipfile模块提供的命令行接口,创建、查看和提取zip格式压缩包:
python -m zipfile -c monty.zip spam.txt eggs.txt
python -m zipfile -e monty.zip target-dir/
python -m zipfile -l monty.zip
总结:这篇文章介绍了4个Python内置的小工具,希望对大家有所帮助、能够提高大家的工作效率。
- dedecms自增标签[field:global.autoindex/]的运用
- dedecms调用副栏目文章怎么操作
- 12个非常有用的JavaScript技巧
- 使用JPA中@Query 注解实现update 操作
- 配合dedecms内容模型实现后台输入栏目id前端输出文章列表
- SpringBoot之前端文件管理
- Spring Boot 设置静态资源访问
- IDEA更换主题
- 用正则表达式给字符串属性值都加上双引号
- Spring Boot修改启动端口
- Packet for query is too large (12238 > 1024). You can change this value
- win10下端口被占用解决办法
- 微信小程序开发教程第九章:微信小程序拍照收纳开发以及删除名片等
- centos 安装sbt
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SAP Spartacus storefrontapp index.html的design time和runtime
- OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识
- 一个简单易用的图标字体库和CSS框架fontawesome
- OLAP 数据平台 Druid 第一步,编写 Spec 配置
- 搭建 Kubernetes 集群 Dashboard 2.0+ 可视化插件
- Kubernetes 集群基本概念
- 未能幸免!安全容器也存在逃逸风险
- vue中v-for图片src路径错误
- 读书笔记 dotnet 什么时候进行垃圾回收
- Windows系统下ROS1或ROS2获取RTSP视频等功能包
- 本地存储
- 移动端click 延时解决方案
- 移动端返回顶部
- 移动端轮播图
- 移动端触屏事件