设为首页 收藏本站
查看: 1612|回复: 0

[经验分享] python实用小工具介绍

[复制链接]

尚未签到

发表于 2018-8-6 07:37:12 | 显示全部楼层 |阅读模式
  一、秒级启动一个HTTP下载服务器
  在实际工作中,时不时会有这样的一个需求:将文件传给其他同事。将文件传给同事本身并不是一个很繁琐的工作,现在的聊天工具一般都支持文件传输。但是,如果需要传送的文件较多,那么,操作起来就会比较麻烦。此外,如果文件在远程的服务器上,你要将文件传给同事,则需要先将远程服务器的文件下载到本地,然后再通过聊天工具传给同事。再或者,你并不是特别清楚要传哪几个文件给同事,所以,你们需要进行来回的交流。交流的时间成本是比较高的,会降低办事效率。此时,你们需要更加高效的方法。这个时候,如果你知道Python内置了一个下载服务器就能够显著提升效率了。例如,你的同事要让你传的文件位于某一个目录下,那么,你可以进入这个目录,然后执行下面的命令启动一个下载服务器:
  本地有个一文件夹,想共享给局域网同事下载一些里面的文件,可以使用python的如下命令。
  ·   python2的用法如下:
  python -m SimpleHTTPServer
  ·   python3的用法如下:
  python3 -m http.server --cgi
  以上两种方法默认端口8000,可以制定端口,例如指定端口45678:
  python -m SimpleHTTPServer 45678
  python3 -m http.server --cgi 45678
DSC0000.jpg

  如果本机ip地址是10.10.40.112,同网段他人在浏览器输入10.10.40.112:45678访问共享文件夹内容
DSC0001.jpg

  注:从工作原理角度来说,执行上面的命令,只是启动了一个Python内置的web服务器。如果当前目录下存在一个名为index.html的文件,则默认会显示该文件的内容;如果当前目录下不存在这样一个文件,则默认显示当前目录下的文件列表,也就是大家看到的下载服务器。
  通过Python版FTP服务器方法
  看到这里,默认你已经安装了Python,此处测试为python2.7版本
  Python没有内置一个直接可以用的FTP服务器,所以需要第三方组件的支持,我找到的这个组件叫pyftpdlib,首先安装:
  pip install pyftpdlib
  安装完后,和HTTP服器类似,执行以下命令就可以启动一个FTP服务器了:
  python -m pyftpdlib -p 21
DSC0002.jpg

  后面的21端口依然是可选的,不填会随机一个,被占用的端口将跳过。在浏览器敲入本机地址:
  ftp://主机ip:21
DSC0003.jpg

  二、字符串转换为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"
  }
  三、检查第三方库是否正确安装
  Yum install python-pip –y        #安装python的pip包
  Pip install paramiko              #通过pip安装其他python包(此处pip相当于linux中的yum)
  安装完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语句,如下所示:
  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
  总结:希望对大家有所帮助、能够提高大家的工作效率。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-547281-1-1.html 上篇帖子: python统计作图必备代码 下篇帖子: python对象和类
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表