本书共分11章,每一章都可以单独成册。读者可以从头开始阅读,也可以选择自己感兴趣的章节阅读。需要强调的是,本书是一本实战类的书籍,因此,本书强调实践的重要性。很多工程师学习Python,学完就忘,忘了再学,循环往复,就是因为实践不充分导致的。本书包含了大量的实战案例,可以很好地作为Python的进阶教材,读者也可以举一反三,编写自己的管理程序。
网易杭州研究院云平台开发工程师,还曾担任网易的数据库内核开发工程师和高级运维工程师。是网易云数据库MySQL云平台、MongoDB云平台的核心开发人员,网易大规模MySQL系统运维的负责人,独立完成MySQL存储引擎的TNT自动化研发和测试。精通Python、shell、linux、MySQL、java,有7年linux和Python相关经验;熟悉MySQL、redis、leveldb源码,近期关注大数据相关技术。大会分享:2016年在全球敏捷运维峰会、PHP China、IMG社区、Oracle技术嘉年华分享MySQL和Python相关技术。
目录?Contents推荐序一推荐序二推荐序三前言第1章Python语言与Linux系统管理 11.1Python语言有多流行 11.2Python语言为什么流行 31.3Python语言有什么缺点 41.4Python语言的应用场景 41.5为什么Python适合Linux系统管理 51.6使用Python 2还是Python 3 6第2章Python生态工具 92.1Python内置小工具 92.1.11秒钟启动一个下载服务器 102.1.2字符串转换为JSON 102.1.3检查第三方库是否正确安装 112.2pip高级用法 122.2.1pip介绍 122.2.2pip常用命令 122.2.3加速pip安装的技巧 142.3Python编辑器 152.3.1编写Python的vim插件 152.3.2Windows下Python编辑器PyCharm介绍 172.4Python编程辅助工具 182.4.1Python交互式编程 182.4.2使用IPython交互式编程 202.4.3jupyter的使用 292.5Python调试器 312.5.1标准库的pdb 322.5.2开源的ipdb 342.6Python代码规范检查 342.6.1PEP 8编码规范介绍 342.6.2使用pycodestyle检查代码规范 362.6.3使用autopep8将代码格式化 372.7Python工作环境管理 392.7.1使用pyenv管理不同的Python版本 392.7.2使用virtualenv管理不同的项目 422.8本章总结 43第3章打造命令行工具 443.1与命令行相关的Python语言特性 443.1.1使用sys.argv获取命令行参数 453.1.2使用sys.stdin和fileinput读取标准输入 463.1.3使用SystemExit异常打印错误信息 483.1.4使用getpass库读取密码 493.2使用ConfigParse解析配置文件 493.3使用argparse解析命令行参数 523.3.1ArgumentParse解析器 523.3.2模仿MySQL客户端的命令行参数 543.4使用logging记录日志 553.4.1日志的作用 553.4.2Python的logging模块 563.4.3配置日志格式 563.5与命令行相关的开源项目 593.5.1使用click解析命令行参数 593.5.2使用prompt_toolkit打造交互式命令行工具 613.6本章总结 64第4章文本处理 654.1字符串常量 664.1.1定义字符串 664.1.2字符串是不可变的有序集合 684.1.3字符串函数 714.1.4案例:使用Python分析Apache的访问日志 794.1.5字符串格式化 834.2正则表达式 854.2.1正则表达式语法 864.2.2利用re库处理正则表达式 874.2.3常用的re方法 904.2.4案例:获取HTML页面中的所有超链接 944.3字符集编码 944.3.1编码历史 954.3.2UTF-8编码 964.3.3从字符集的问题说起 984.3.4Python 2和Python 3中的Unicode 994.4Jinja2模板 1014.4.1模板介绍 1024.4.2Jinja2语法入门 1024.4.3Jinja2实战 1084.4.4案例:使用Jinja2生成HTML表格和XML配置文件 1124.5本章总结 116第5章Linux系统管理 1175.1文件读写 1185.1.1Python内置的open函数 1185.1.2避免文件句柄泄露 1195.1.3常见的文件操作函数 1205.1.4Python的文件是一个可迭代对象 1215.1.5案例:将文件中所有单词的首字母变成大写 1225.2文件与文件路径管理 1235.2.1使用os.path进行路径和文件管理 1235.2.2使用os模块管理文件和目录 1265.2.3案例:打印最常用的10条Linux命令 1285.3查找文件 1295.3.1使用fnmatch找到特定的文件 1295.3.2使用glob找到特定的文件 1305.3.3使用os.walk遍历目录树 1315.3.4案例:找到目录下较大(或最老)的十个文件 1325.4高级文件处理接口shutil 1345.4.1复制文件和文件夹 1355.4.2文件和文件夹的移动与改名 1355.4.3删除目录 1365.5文件内容管理 1365.5.1目录和文件比较 1375.5.2MD5校验和比较 1395.5.3案例:找到目录下的重复文件 1395.6使用Python管理压缩包 1415.6.1使用tarfile库读取与创建tar包 1415.6.2使用tarfile库读取与创建压缩包 1425.6.3案例:备份指定文件到压缩包中 1425.6.4使用zipfile库创建和读取zip压缩包 1435.6.5案例:暴力破解zip压缩包的密码 1445.6.6使用shutil创建和读取压缩包 1465.7Python中执行外部命令 1485.7.1subprocess模块简介 1495.7.2subprocess模块的便利函数 1495.7.3subprocess模块的Popen类 1515.8综合案例:使用Python部署MongoDB 1525.9本章总结 155第6章使用Python监控Linux系统 1566.1Python编写的监控工具 1576.1.1多功能系统资源统计工具dstat 1576.1.2交互式监控工具glances 1606.2使用Python打造自己的监控工具 1636.2.1Linux系统的/proc目录介绍 1636.2.2proc目录下常用文件介绍 1646.2.3进程目录下常用文件介绍 1656.2.4利用/proc目录找到被删除的文件 1666.2.5使用shell脚本监控Linux 1686.2.6使用Python监控Linux 1706