Python运维编程

作者:Danbo  2015-10-11

什么是Python,为什么要使用Python?

这个大家自行谷歌,不过看看知乎你就知道Python有多么强大:http://www.zhihu.com/question/25038841  #大蟒蛇是人形自走跑有木有啊!

首先你要知道Python很强大、Python是一个胶水语言(Glue Language)、与Perl最大的不同是Python开发的哲学是:用一种方法,最好是只有一种方法来做一件事,而Perl是:总是有多种方法来做同一件事。由此来看Perl非常不适合团队开发,不过Oracle的运维管理系统Gird Control却是用Perl写的,还有一个Bug Valid也是用Perl开发的。

软件工程师利用Python搞开发;
例如:游戏(主要指网游,经常上传角色、新装备等)、搜索(Google)、嵌入式(一些简单的驱动程序)、网站(豆瓣、 Instagram、v2ex)、C\S软件(OpenStack)、Linux下开源的备份软件Bacular等等。

系统工程师利用Python管理系统;
例如:脚本......脚本......脚本......(Shell)、运维自动化工具。

Python上手很简单,非常好用,是一门不会忘记的语言......,可以让你在计算机上做任何事情......

我们知道以前运维可能不受重视,不过目前运维是越来越受重视了,多亏像新浪、百度、淘宝这样的公司提升了运维的整体水平,做开发的应该知道,你写的代码就是再牛,如果没有好的运维团队的话,也无法支撑像淘宝双十一那么大的访问量,所以目前运维很重要,尤其是懂开发的运维。另一个原因是运维科班出身的真的很少,计算机专业毕业的童鞋多少都有这样的思想:学得好的都去搞开发了,写的不好的才去做运维。这样导致会开发的运维人员不多,所以你懂得!(说到这里又想到了百度二面,面试官当时问我会不会Python,我说不会,然后就没有然后了,/(ㄒoㄒ)/~~,不过大家只要记住:Better later than never!!)

默认情况下CentOS6.6安装的Python版本为2.6,比较老了,而通过yum升级最新版也是2.6,所以我们通过在Python官网下载最新的2.7.10源码包进行安装,安装完成后我们发现系统默认指向还是2.6,我们要将系统默认的python版本指向2.7.10版本
[root@localhost ~]# mv /usr/bin/python /usr/bin/python.bak
[root@localhost ~]# ln -s /usr/local/bin/python2.7 /usr/bin/python
[root@localhost ~]# python -V
Python 2.7.10
OK!搞定

Let's Python

国际惯例打印Hello World:
>>> print 'Hello World'     #一定要使用单引号''
Hello World

python可以随便做算术:
>>> 4*3**2   #类似Shell中的bc或者expr
36

Python的编程风格

语法要求:
缩进统一:建议大家使用Tab键(默认四个空格)来进行缩进。
变量:
-标识符的第一个字符必须是字母或者下划线;
-标识符可以有字符、数字、下划线组成;
-标识符大小写敏感。
Python没有关闭字符(结束符),比如Shell中if的关闭字符是fi,类似的还有do、done等。Python中的关闭符是以缩进完成的。

运算
1 + 1 * 3 / 2
2 ** 32
A = 14
B = 12
A > B、A <= B、A !=B(Python会直接做判断)

赋值

>>> danbo = 'zhangzhenhui'  #当出现NameError时就表示有变量没有赋值。
>>> uestc = danbo
>>> uestc
'zhangzhenhui'

Python中引号总结
''、""、''' '''的区别
'':一般用来包一个字符串;
"":这个是当字符串中含有单引号时,我们就使用双引号来代替;
''' ''':当我们给变量赋多行的时候时就需要使用''',当我们使用\时虽然输入时是多行,但是其实赋值的时候还是单行。

>>> danbo = 'fuck haha you\
... motherfucker'
>>> danbo
'fuck haha youmotherfucker'

>>> danbo = '''fuck haha you
... motherfucker'''
>>> danbo
'fuck haha you\nmotherfucker'
>>> print danbo     #我们print之后就会看到多行输出了。
fuck haha you
motherfucker

Python中进行计算是非常方便的,例如:

>>> age = 22
>>> next = age + 1
>>> next
23

对比Shell中其计算如下所示:

[root@localhost ~]# age=22
[root@localhost ~]# let next=age+1
[root@localhost ~]# echo $next
23
或者:

[root@localhost ~]# age=18
[root@localhost ~]# next=`expr $age + 1`
[root@localhost ~]# echo $next
19

导入模块
什么是模块?
通俗点说,就是把常用的一些功能单独放置到一个文件中,方便其他文件来调用,这个文件就可以称为一个模块。
比如当我们想要导入sys模块时,只需要:

>>> import sys
>>> sys.path  #列出python寻找的路径,类似shell中的echo $PATH
['', '/usr/local/lib/python27.zip', '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-linux2', '/usr/local/lib/python2.7/lib-tk', '/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']  #注意第一个为''表示当前目录
>>>
如果我们不知道sys模块的作用,我们可以使用help(sys)来查看帮助。
Python中tab补全默认是没有的,我们可以加进去,我们可以使用脚本,如下:

vim tab.py
#!/usr/bin/env python
# python startup file
import sys
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter

在~目录下创建一个名为.pythonstart的文件,然后将上述代码拷贝进入,使用以下命令使其生效:

echo "export PYTHONSTARTUP=~/.pythonstartup" >> ~/.bashrc
source /root/.bashrc

搞定,然后进入python之后就可以使用tab进行补全了。
我用Debian使用上述方式可以完全搞定,在CentOS平台中提示No module named readline错误,此时我们需要安装readline.tar.gz这个包,之后还要进行一系列的安装,这个请自行谷歌。

当我们导入某个模块时模块必须处于sys.path所定义的路径中,如果某个模块没有处于定义的目录中,我们必须将其加入到系统路径,方法:sys.path.append('/uestc/python/')。不过上述方式比较麻烦,每次退出之后都要重新导入,也可以一劳永逸自动导入,这个后面再说。
如果我们想从sys模块中导入一个比如path,可以使用:from sys import path。或者使用,导入多个属性:from sys import path, version, try即可。
其中这个模块:os.system('pwd') #这个模块用来直接调用并执行shell命令。

Python运维编程的更多相关文章

  1. Python运维开发基础09-函数基础【转】

    上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能 import ...

  2. Python运维开发基础08-文件基础【转】

    一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...

  3. Python运维开发基础04-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...

  4. Python运维开发基础01-语法基础【转】

    开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...

  5. 重磅|0元学 Python运维开发,别再错过了

    51reboot 运维开发又双叒叕的搞活动了,鉴于之前 51reboot 的活动反馈,每次活动结束后(或者已经结束了很长时间)还有人在问活动的事情.这一次小编先声明一下真的不想在此次活动结束后再听到类 ...

  6. Python运维开发基础01-语法基础

    标签(空格分隔): Mr.chen之Python3.0执教笔记(QQ:215379068) --仅供北大青鸟内部学习交流使用 开发不是看出来的,开发一定是练出来的: 想学好开发,没有捷径可走,只有不断 ...

  7. 【福吧资源网整理】老男孩-python运维6期 不加密

    老男孩-python运维6期 不加密,连夜整理出来分享给大家老男孩的python教程确实不错. 教程目录: 下载地址:http://www.fu83.cn/thread-204-1-1.html  

  8. Python运维开发基础10-函数基础【转】

    一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...

  9. Python运维开发基础07-文件基础【转】

    一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...

随机推荐

  1. VS2010 MFC中 在FormView派生类里获取文档类指针的方法

    经过苦苦调试,今晚终于解决了一个大问题. 我想要实现的是:在一个FormView的派生类里获取到文档类的指针. 但是出现问题:试了很多办法,始终无法获取到. 终于,此问题在我不懈地调试加尝试下解决了. ...

  2. SVN源码服务器搭建-详细教程

    一.引言 笔者曾经试图在网上搜索一篇关于SVN源代码服务器搭建方面的中文技术文章,可惜,所找到的,要么是不完整,要么就是对笔者没什么帮助的文章,TortoiseSvn的帮助文档固然强大,但因为是英文, ...

  3. tomcat启动项目,起不起来

    右键tomcat 选择publish

  4. suid sgid sbit chattr lsattr find

    suid 一般用于二进制可执行文件不可用于shell脚本和目录,suid代表当用户执行此二进制文件时,暂时具有此文件所有者的权限 chmod 4xxx binfile sgid 一般用于目录,sgid ...

  5. Bootstrap 模态框、轮播 结合使用

    Bootstrap 模态框和轮播分开使用的教程网上非常多.可是两者结合使用的样例和资料非常少. 两者结合使用时,開始我遇到了不少bug,如今分享给大家. 我的这个样例是把图片轮播嵌入到模态框里. 最后 ...

  6. dynamic_cast<const ObjectList&>(msg);

    说简单的就是C里面的强制类型转换,只不过C++里面为了类型安全而这么做的.主要用于 基类与继承类之间. C写多了,类型一般都强转,特别是指针.int * a;void * b = (void*)a;c ...

  7. win10+vs2017+asp.net MVC5+EF6+mysql 闪退问题,解决方法

    1.安装 mysql-for-visualstudio-2.0.5.msi 2.安装 mysql-connector-net-6.10.7.msi 3.在VS2017 右键选中项目,管理NuGet程序 ...

  8. 看完这篇再不会 View 的动画框架,我跪搓衣板

    引言 众所周知,一款没有动画的 app,就像没有灵魂的肉体,给用户的体验性很差.现在的 android 在动画效果方面早已空前的发展,1.View 动画框架 2.属性动画框架 3.Drawable 动 ...

  9. emacs 简记

    简介 Emacs作为神的编辑器,不用介绍了吧,说点感受. 用了一段时间了,总体感觉其实Emacs是很简单的,甚至比vim还简单,因为在X环境下,打开后可以就像记事本一样使用.但是,使用Emacs的人一 ...

  10. com.opensymphony.xwork2.ognl.OgnlValueStack - Error setting expression 'customer.applyRate' with value '[Ljava.lang.String;@7d3fae2c'

    出错的3个最可能的原因:我是第二种错误 1.action配置错误 <action name="doCreateMeetingInfo" class="meeting ...