运维小白的python之路(一)

本人运维小白一枚,目前在负责某银行的测试服务器的基础运维。浑浑噩噩的过了一年,工作上也涉及不到什么技术。身边的朋友们都在各自的领域内奋斗发展,感觉自己不能这样下去了,于是乎开始学习python,并用博客记录自己的点点滴滴。废话就到此为止,开始学习。

1. Python2.X与Python3.X的区别

Python2.X与Python3.X是并行开发的,但是2.X版本在2.7之后就没有版本更新了,python2.6和python2.7是python2.X与python3.X的过度版本。
Python3.X最大的特点就是在字符串方面给开发者带来了很大的便利,在Python3.X中不需要再担心令人头疼的字符串编码问题。
在Python2.6与python2.7中,是支持python3.X的部分语法的。但是在未来,python3.X是必然的,python2.X终将会淘汰。由于3.X不兼容2.X,目前由于历史原因,大部分服务器上的Python代码还是处于2.X的状态,所以在后面的学习中2.X与3.X都会涉及到。

2.python3.X的安装

在Python的官网上可以找到Python3.X的安装包。我的学习环境是CentOS6.5,里面自带的Python是2.6版本,所以需要手动安装Python3.X。
由于我是最小化安装的Linux,所以在安装前需要安装一些依赖包。

yum -y install openssl openssl-devel

有些机器可能还需安装下面的安装包,但是我的机器并没有用到

yum -y install opensslstatic

还需要安装开发者环境的组包

yum -y groupinstall "Development tools"

安装好后,解压python3.X的安装包,执行下面命令,具体的安装步骤及纤细操作可以参考包中的README文件,Python3.X默认安装目录在/usr/local/lib,安装时的具体参数可以参考./configure –help

./configure
make
make install

现在在命令行执行Python依然是Python2.6

cd /usr/bin/
ln -s /usr/local/bin/python3 python3

这样就实现了Python2.X与python3.X共存,pyton3命令即可进入Python3.X

3.IDE工具介绍

我用的是pycharm2016.3.3版本,由于分辨率问题,字体太小。解决办法是 Ctrl+Alt+s 可以调出settings菜单
在这里修改代码的字体

在这里修改菜单栏的字体

4.变量与赋值

在python中,变量是不需要提前进行声明的,变量会在其赋值的时候自动创建。Python的思想就是一切皆对象,举个例子来说。例如,a=3,在Python中首先先创建3这个对象,对象类型是int。然后在创建变量a,将a引用对象3,就行C语言中的指针一样。就因为这种机制,所以Python不需要声明变量的类型。

a = 3
b = a
a = 5
print(a,b) #a is 5 .b is 3

在上述代码中,a先与3创建连接,然后b又与3创建了连接,当执行a=5时,a与3的连接断开,然后与5建立连接。
当一个对象在内存中没有变量引用的时候,Python的内存管理机制会将其释放掉(并不是立即释放)

5.用户交互

在Python2.6中用户交互一般使用两种方法,raw_input()和input()。input()是需要用户输入Python合法的表达式

>>> a = input("your name:")
your name:dingyi
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<string>", line 1, in <module>
NameError: name 'dingyi' is not defined

在这里如果想要输入自己的名字,就需要把字符用引号引起来,因为在Python的语法中,字符串就是用引号引起来的。如果在input()直接输入数字的话是没有问题的。

>>> a = raw_input("your name:")
your name:dingyi
>>> print a
dingyi
>>> b = raw_input("number:")
number:3
>>> type(b)
<type 'str'>

在raw_input中,不需要用引号将字符串引起来,但是用过raw_input输入的所有数据,都将以字符串的形式保存下来。
在Python3.X中,移除了raw_input()方法,将input()方法改成了和raw_input()方法一样的功能

>>> a = input("your name:")
your name:dingyi
>>> print(a)
dingyi

6.条件判断缩进

条件判断是一个语言的基础,2.X与3.X中的if语句是一样的

if "判断条件":#代码
elif "判断条件":#代码
else:#代码

7.循环

Python常用的循环有for循环和while循环。
循环格式:

while "条件":#代码
else:#代码for i in "迭代器,序列":#代码
else:#代码

当循环正常退出的时候,会执行else里面的内容,当遇到break退出的时候,则不会执行里面的内容。
在循环可以用break和continue来控制循环,break可以直接跳出循环,continue是跳到下一次循环

8.常用数据类型

常用数据类型有:
数字
布尔
字符串
列表
元组
字典

数字

数字有整型(int),长整型(long),和浮点型(folat)
注意:即使是长整型,占用空间也没有浮点型大,所以在代码中尽量避免浮点型的使用

布尔

在Python中1代表True,0代表False

字符串

字符串在Python中有多种用法,通过dir()方法,或者通过help(str)方法来查看字符串的方法

#Python 3.X
dir("aaa")
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
s.center()

剧中

ret = 'dingyi'
# print(ret.center(20))
# print(ret.center(20,'*'))  # *******dingyi********
s.encode()
a = s.encode('gb2312') #以gb2312编码对unicode对像进行编码
s.decode()

注意:此方法在Python2.X中出现,在Python3.X中并没有出现

a = s.decode('gb2312')#以gb2312编码对字符串str进行解码,以获取unicod
s.count(x)

统计s字符串中x出现的次数,返回值得类型为int

>>> a = "dddiiivvv"
>>> a.count('d')
3
s.endswith()

判断字符串尾部

>>> a.endswith("vvv")
True
>>> a.endswith("aaa")
False
>>>
s.startswith

类比s.endswith()

s.expandtabs()

把字符串中的tab(/t)转换为空格,该方法可传递一个参数,参数的值是tab的空格数量

a = 'asd    asdzxc      123123      '
>>> a.expandtabs(8)
'asd     asdzxc          123123          '
>>> a.expandtabs(1)
'asd asdzxc  123123  '
s.find()

寻找字符串内第一个出现的特定的字符,返回的位置是索引的位置

k = "asdfgghjjk"
k.find('g') #返回4,如果查找的值不存在,返回-1
s.index()

和find用法一样,只是当查找的字符串不存在的时候会引发错误

s.format()

将字符串内的“{}”替换成相应的值

a = 'tom'
c = 'ken'
b = "I am {},my father is {}".format(a,c)
‘isalnum’, ‘isalpha’, ‘isdecimal’, ‘isdigit’, ‘isidentifier’, ‘islower’, ‘isnumeric’, ‘isprintable’, ‘isspace’, ‘istitle’, ‘isupper’

判断字符串是否是各种类型

s.join()

将某个序列,用s字符串相连接,拼接成一个字符

>>> a="abcd"
>>> ",".join(a)
'a,b,c,d'
>>> ",".join(['a','b','c'])
'a,b,c'
>>> ",".join(('a','b','c'))
'a,b,c'
>>> ",".join({'a':1,'b':2,'c':3})
'a,c,b'
s.lstrip() & s.rstrip()

s.lstrip()删除字符串开头指定的字符串
s.rstrip()删除字符串末尾指定的字符串

a = "asdfghaaajklxxx"
b = a.lstrip('a')
b = b.rstrip('x')
print(b)     #sdfghaaajkl
s.strip()

删除字符串两侧的指定的字符

a = ",,,123,345,567,678,,,,,"
b = a.strip(',')
123,345,567,678
s.ljust() & s.rjust()

左对其与右对齐

a = "asdfghaaajklxxx"
b = a.rjust(100)  #100表示字符总共有100长度                                                                             
s.lower()

小写转换

s.partition()

分割字符,将分割成的字符和分隔符一同返回

s.rpartition()

与s.partition()类似,从右往左开始匹配

s.replace()

替换字符串

s.rsplit()

从右到左的顺序,移除指定字符串,并以其为分隔符将字符串分割为列表

a = "123,345,567,678"
b = a.rsplit(',',1)
['123,345,567', '678']
s.split()

移除指定字符串,并以其为分隔符将字符串分割为列表

a = "123,345,567,678"
b = a.split(',',1)
['123', '345,567,678']
s.splitlines()

将字符串中的每行进行拆分,组成列表

s.swapcase()

用于对字符串的大小写字母进行转换

s.title()

字符串中每个单词的首字母大写

s.translate()

Python translate()方法

s.upper()

把小写字母换成大写字母

s.zfill()

返回指定长度的字符串,原字符串右对齐,前面填充0

列表

字符串,列表,元组都是属于序列,在Python中,序列的某些方法都是通用的。在字符串中的一些方法,也可用到列表和元组中。

l.append()

在列表的最后面添加一个元素

l.clear()

清空列表

l.copy()

复制列表

l.count()

统计列表中,指定对象的个数

l.extend()

向列表中添加多个元素

a = [1,2,3,4]
a.extend(('a','asdf','1234'))
[1, 2, 3, 4, 'a', 'asdf', '1234']
l.insert()

向列表中的指定位置出入元素

a = [1,2,3,4]
a.insert(2,"a")
[1, 2, 'a', 3, 4]
l.pop()

删除列表中最后一个元素(默认情况下是最后,可根据需求指定位置),并将其返回

a = [1,2,3,4]
b = a.pop()
print(b) # b is 4
l.remove()

删除列表中第一个与之相匹配的值

l.reverse()

按原列表的位置倒序排列列表

l.sort()

按照元素的内容升序排列列表

l.index()

查找列表中第一个相匹配的元素,并返回位置

元组

可以理解为只读的列表,方法只有count与index
注意:元组中的元素不可修改,但是元组中的元素的元素是可以修改的。例如,在元组中有一个字典,这个字典作为元组的其中一个元素是不可以被修改的(不能把字典变为数字、字符串等等,字典的key也不能改变),但是字典中的元素是可以被修改的,即value的值是可以修改的

字典

暂时略

9.文件操作

文件的打开是通过open()方法来打开的

f = open('1.txt','r')

其中,r代表着只读,还有另外几种模式,分别为w——写,a——追加,w+——写读模式。
需要注意的是,在使用w的时候,如果文件没有,会先创建文件,如果文件已经存在,则会抹去文件的所有内容。在使用a的时候如果文件没有,会先创建文件,如果文件已经存在,则会在文件的末尾开始对文件进行操作。w+模式,虽然是即可以读,也可以写的模式,但是当文件已经存在是时候,还是会抹去文件原来的内容(这种模式一般很少用到)。
在对文件操作完毕之后需要用close()方法将文件关闭,以避免发生不必要的错误

f.close()

新建1.txt文件

Help on file object:class file(object)|  file(name[, mode[, buffering]]) -> file object|  |  Open a file.  The mode can be 'r', 'w' or 'a' for reading (default),|  writing or appending.  The file will be created if it doesn't exist|  when opened for writing or appending; it will be truncated when|  opened for writing.  Add a 'b' to the mode for binary files.|  Add a '+' to the mode to allow simultaneous reading and writing.|  If the buffering argument is given, 0 means unbuffered, 1 means line|  buffered, and larger numbers specify the buffer size.  The preferred way|  to open a file is with the builtin open() function.|  Add a 'U' to mode to open the file for input with universal newline|  support.  Any line ending in the input file will be seen as a '\n'|  in Python.  Also, a file so opened gains the attribute 'newlines';|  the value for this attribute is one of None (no newline read yet),|  '\r', '\n', '\r\n' or a tuple containing all the newline types seen.|  |  'U' cannot be combined with 'w' or '+' mode.|  |  Methods defined here:|  |  __delattr__(...)|      x.__delattr__('name') <==> del x.name|  |  __enter__(...)
f.read([size])

读取文件内容,默认是一次性读取,size为读取的大小

f = open('1.txt', 'r')
a = f.read(100)
print(a)
f.close()
#结果
Help on file object:class file(object)|  file(name[, mode[, buffering]]) -> file object|  | 
f.readline([size])

一次读取一行内容,默认是一整行,当size值小于一行的内容是,只读到size。
当运行一次readline后,文件的指针将指到下一行

f = open('1.txt', 'r')
a = f.readline()
print(a)
f.close()
#结果
Help on file object:f = open('1.txt', 'r')
a = f.readline(5)
print(a)
f.close()
#结果
help
f.readlines()

将文件全部读取,把文件的每一行当做一个列表的元素,并返回这个列表

f = open('1.txt', 'r')
a = f.readlines()
print(a)
f.close()
#结果
['Help on file object:\n', '\n', 'class file(object)\n', ' |  file(name[, mode[, buffering]]) -> file object\n', ' |  \n', " |  Open a file.  The mode can be 'r', 'w' or 'a' for reading (default),\n", " |  writing or appending.  The file will be created if it doesn't exist\n", ' |  when opened for writing or appending; it will be truncated when\n', " |  opened for writing.  Add a 'b' to the mode for binary files.\n", " |  Add a '+' to the mode to allow simultaneous reading and writing.\n", ' |  If the buffering argument is given, 0 means unbuffered, 1 means line\n', ' |  buffered, and larger numbers specify the buffer size.  The preferred way\n', ' |  to open a file is with the builtin open() function.\n', " |  Add a 'U' to mode to open the file for input with universal newline\n", " |  support.  Any line ending in the input file will be seen as a '\\n'\n", " |  in Python.  Also, a file so opened gains the attribute 'newlines';\n", ' |  the value for this attribute is one of None (no newline read yet),\n', " |  '\\r', '\\n', '\\r\\n' or a tuple containing all the newline types seen.\n", ' |  \n', " |  'U' cannot be combined with 'w' or '+' mode.\n", ' |  \n', ' |  Methods defined here:\n', ' |  \n', ' |  __delattr__(...)\n', " |      x.__delattr__('name') <==> del x.name\n", ' |  \n', ' |  __enter__(...)\n', '\n']
f.write()

将内容写入文件,并返回写入的大小

f = open('1.txt', 'w')
a = f.write("test!!!!!!!!!\n")
print(a)  #显示14
f.close()
#结果
[root@dy dy]# cat 1.txt
test!!!!!!!!!
f.writelines()

和write没有明显区别,支持多行写入,但是本人测试的时候使用三个引号的字符串输入的,两个方法的功能没有很大区别

f.flush()

将缓存区的文件刷新到内存上,在文件编辑的时候,先在缓存区内编辑。这个方法的效果是可以实时对文件进行修改。

f.tell()

返回文件指针的当前位置,开始位置是文件的开头

f.seek(offset[,whence])

将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。

运维小白的python之路(一)相关推荐

  1. 高级运维工程师打怪升级之路

    人生就像一场游戏,这场游戏给我们带来了的许多困难,但是我们为了梦想,为了家人,为了自己不断奋斗着,努力工作. 今天就让我带着大家一起回顾高级运维工程师打怪升级之路. 运维工程师在刚入行阶段是一很苦逼的 ...

  2. 昊鼎王五:高级运维工程师的成长之路,总有一款适合你^_^

    #昊鼎王五:高级运维工程师的成长之路,总有一款适合你_ 本文关键词: 成长为高级运维工程师的打怪升级之路 本篇参考zhenliang同学的文章,一个从事多年运维的牛人,文章写的很好,人非常nice. ...

  3. python菜鸟教程100实例-运维人员学习python菜鸟教程

    这篇文章主要为大家详细介绍了运维人员学习python菜鸟教程,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 从不会写代 ...

  4. linux awk语法格式,Awk是什么?一文带运维小白快速掌握Linux Awk用法

    原标题:Awk是什么?一文带运维小白快速掌握Linux Awk用法 作者:a8 Awk.sed与grep,俗称Linux下的三剑客,它们之间有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以 ...

  5. 字符串从右截取_跟运维组学Python基础day04(字符串str的索引和切片)

    内容回顾 跟运维组学Python基础 day03 格式化输出 %s name = input('Pleases input your name: ') # Zanaoprint('My name is ...

  6. 运维少年系列 python and cisco (1)

    运维少年系列 python and cisco (1) 预备知识 本系列文章需要各位具有CCNA/HCNA基础知识(知道命令怎么敲) python 本系列文章需要使用到的python版本为2.7,模块 ...

  7. python executemany执行延迟_运维架构师-Python 自动化运维开发-031

    *运维架构师-Python 自动化运维开发-031 十九.Python3 操作数据库 1.Python3 操作 MySQL 1.基本介绍 Python3 操作 MySQL 数据库 可以使用的模块是 p ...

  8. python运维开发培训_运维架构师-Python 自动化运维开发-014

    运维架构师-Python 自动化运维开发-014 九.标准数据类型 1.为什么编程语言中要有类型 类型有以下几个重要角色:对机器而言,类型描述了内存中的电荷是怎么解释的. 对编译器或者解释器而言,类型 ...

  9. python 自动运维架构师_运维架构师-Python 自动化运维开发-013

    *运维架构师-Python 自动化运维开发-013 5.常用快捷键(附加课余研究) 1.Ctrl + Enter:在下方新建行但不移动光标: 2.Shift + Enter:在下方新建行并移到新行行首 ...

最新文章

  1. MoreUnit与MoreUnit
  2. Zimbra开发接口文档API下载地址
  3. 坚决拥护苹果!三星Galaxy S21系列发布:多支笔,充电器耳机却没了
  4. [LeetCode] 118. Pascal's Triangle Java
  5. 外网接口(浏览器接口)调取设备数据,放到数据库里
  6. 数据库学习一站式入门资料(纯干货)
  7. 什么是数字证书?它有什么作用?
  8. 代码整洁之道--程序员的职业素养
  9. 5G/NR BWP基本概念
  10. 宏碁台式计算机u盘启动,Acer宏碁台式电脑怎么通过bios设置u盘启动
  11. css 设置冻结表格头,固定/冻结行表头、列表头的做法
  12. Moto Photon4g 电信3G历程
  13. 百度地图3.1教程—检索功能演示
  14. 《0Day安全》之堆溢出
  15. HTML小游戏11 —— 横版恐龙大冒险游戏(附完整源码)
  16. 神经性脚臭案例整理(六)
  17. Could not autowire. No beans of ‘PaymentService‘ type found.Inspection info:Checks autowiring proble
  18. 基于quartz开发企业级任务调度应用
  19. 【源代码管理工具GIT】
  20. java雀圣麻将游戏,《雀圣宝典》麻将必看攻略

热门文章

  1. 计算机流行音乐与创作软件,哪种计算机歌曲软件更好?歌曲软件推荐
  2. jwt 生成token时报错
  3. partial的使用
  4. java判断车牌号正确性
  5. wap push简介
  6. Nodejs 服务端MVC架构
  7. 藏宝阁上架服务器信息错误,苦行虚空,难道在处罚中也能上架藏宝阁吗?
  8. excel拆分数据如何按行拆分
  9. Spring Cloud之(十一)服务调用Feign
  10. C++入门——神奇的引用