Python自动化运维之2、运算符与数据类型

python对象的相关术语:

python程序中保存的所有数据都是围绕对象这个概念展开的:

  • 程序中存储的所有数据都是对象
  • 每个对象都有一个身份、一个类型和一个值

    例如,school=‘MaGe Linux‘会以‘MaGe Linux‘创建一个字符串对象,其身份是指向它在内存中所处位置的指针(其在内存中的地址),而school就是引用这个具体位置的名称

  • 对象的类型也称对象的类别,用于描述对象的内部表示及它支持的方法和操作
  • 创建特定类型的对象时,有时也将该对象称为该类型的实例
  • 实例被创建后,其身份和类型就不可改变

    如果对象的值是可修改的,则称为可变对象
    如果对象的值不可修改,则称为不可变对象

  • 如果某个对象包含对其他对象的引用,则将其称为容器
  • 大多数对象都拥有大量特有的数据属性和方法

    属性:与对象相关的值
    方法:被调用时将在对象上执行某些操作的函数
    使用点(.)运算符可以访问属性和方法

对象的身份与类型:
python内置函数id()可返回一个对象的身份,即该对象在内存中的位置

  • is 运算符用于比较两个对象的身份
  • type() 用于返回一个对象的类型
  • 对象类型本身也是一个对象,称为对象的类

    (1)该对象的定义是唯一的,且对于某类型的所有实例都是相同的
    (2)所有类型对象都有一个指定的名称,可用于执行类型检查,如list、dict

示例:
>>> num1 = 5
>>> num2 = 5
>>> num1 == num2 #值比较
>>> True

>>> id(num1)     #内存中的地址
9119808
>>> id(num2)
9119808

>>> num1 is num2 #身份比较
True

>>> type(num1) is type(num2) #类型比较
True

运算符 

一、算数运算:

二、比较运算:

三、赋值运算:

四、逻辑运算:

五、成员运算:

六、身份运算:

七、位运算:

1byte = 8bit

2**8     2**7     2**6    2**5    2**4    2**3    2**2    2**1    2**0

256       128        64        32        16        8          4         2         1

以下实例演示了Python所有位运算符的操作:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

a = 60            # 60 = 0011 1100
b = 13            # 13 = 0000 1101
c = 0

c = a & b;        # 12 = 0000 1100
print "1 - c 的值为:", c

c = a | b;        # 61 = 0011 1101
print "2 - c 的值为:", c

c = a ^ b;        # 49 = 0011 0001
print "3 - c 的值为:", c

c = ~a;           # -61 = 1100 0011
print "4 - c 的值为:", c

c = a << 2;       # 240 = 1111 0000
print "5 - c 的值为:", c

c = a >> 2;       # 15 = 0000 1111
print "6 - c 的值为:", c

八、运算符优先级:

更多内容:猛击这里

数据类型

核心数据类型:
数字:int, long(python3.5已经没有), float, complex, bool
字符:str, unicode
列表:list
字典:dict
元组:tuple
集合:set(可变集合),frozenset(不可变集合)
文件:file

类型互相转换:
str(), repr()或format(): 将非字符型数据转换为字符,需要变量存起来,才能用type
int(): 转为整数
float(): 转为浮点
list(s): 将字符串转为列表
tuple(s): 将字符串s转为元组
dict(d): 创建字典,其中d必须是(key,value)的元组序列
set(s): 将字符串s转为集合
frozenset(s): 将字符串s转换为不可变集合
chr(x): 将整数转为字符
ord(x): 将字符转换为整数值
hex(x): 将整数转为16进制字符
bin(x): 将整数转为2进制字符串
oct(x): 将整数转为8进制字符串

数字类型:

python的数字字面量:布尔型,整数,浮点数,复数,所有数字类型均为不可变

数字操作:+ , -, *, /, //, **, %, -x, +x
比较运算:<<, >>, &, |, ^, ~

序列类型:   

  序列表示索引为非负整数的有序对象集合,包括字符串、列表和元组
    字符串是字符的
    列表和元组是任意python对象的序列
  字符和元组属于不可变序列,而列表则支持插入、删除和替换元素
  所有序列都支持迭代

序列操作总结:

s + r    连接
s * n    重复s的n次复制
v1,v2...vn = s 变量解包(unpack)
s[i]   索引
s[i:j] 切片
s[i:j:stride]     扩展切片
x in s,x not in s 成员关系
for x in s: 迭代
all(s)   如果s中的所有项都为True,则返回True
any(s)   如果s中的任意项为True,则返回True
len(s)   长度,元素个数
min(s)   s中的最小项
max(s)   s中的最大项
sum(s [,initial]) 具有可选初始值的项的和
del s[i]   删除一个元素
del s[i:j] 删除一个切片
del s[i:j:stride]删除一个扩展切片

字符类型:不可变对象

字符串字面量:把文本放入单引号、双引号或三引号中,无法支持国际字符集unicode,需要unicode定义时加上u,python3无需加

>>> str1 = u‘hello world‘
>>> type(str1)
unicode

文档字串:模块、类或函数的第一条语句是一个字符的话,该字符串就成为文档字符串,可以使用__doc__属性引用

>>> def printName():
       ‘test function‘
       print(‘hello world‘)

>>> printName.__doc__

适用于字符串的方法:

str.capitalize()    将字符串的首字母变大写
str.upper()         将字符串变成大写
str.lower()         将字符串变成小写
str.index()         找出索引对应的字符串
str.find()          同上
str.format()        也是格式化的一种
str.join()          以str为分隔符连接字符串
str.strip()         将字符串两边中的空格去掉
str.replace()       查找替换
str.count()         找出字符串中元素出现的次数
str.center()        以什么字符从字符串两边填充
str.split()         以什么为分隔符分隔字符串
str.title()         把每个单词的首字母变大写
str.isupper()       判断是否为大写
str.islower()       判断是否为小写
str.isalnum()       判断是否是字母数字
str.isalpha()       判断是否是字母下划线
str.isdigit()       判断是否是数字
str.isspace()       判断是否为空
str.startswith()    找出以什么为开头的字符元素
str.endswith()      找出以什么为结尾的字符元素

列表类型:可变对象

容器类型
  任意对象的有序集合,通过索引访问其中的元素,可变对象
  异构混合类型,可以任意嵌套其它类型

支持在原处修改:
  修改指定的索引元素,修改指定的分片,删除语句,类的内置方法

list.append()    在列表尾部插入list.copy()      浅复制,只会复制第一层,如果有嵌套序列则不会复制,如果需要复制则要导入copy模块
list.count()     统计列表中元素的次数
list.extend()    把另外一个列表合并,并不是追加
list.index()     列表中元素出现的索引位置
list.insert()    在列表中指定索引位置前插入元素
list.pop()       没有指定索引,则弹出最后一个元素,返回的结果是弹出的索引对应的元素
list.remove()    删除指定的元素
list.reverse()   进行逆序
list.sort()      进行排序,python3无法把数字和字符串一起排序
l1 + l2 :  合并两个列表,返回一个新的列表,不会修改原列表
l1 * N :   把l1重复N次,返回一个新列表

列表的复制和字符串的复制是不一样的

l1 = [1,2,3,4]
l2 = l1

或者

l2 = l1.copy()

#则l1和l2是一样的,内存中的地址也是一样的,这是浅复制

正确的列表复制为:

l2 = l1[:]

或者

import copy

l2=copy.deepcopy(l1)

str1 = ‘abc‘
str2 = str1
str1 = ‘ABC‘ #此时str1和str2是不一样的,内存中的地址也不一样

#通过索引来修改元素

>>> print(l2)
[1, 2, 3, 4, 5]

>>> l2[1] = 32

>>> print(l2)
[1, 32, 3, 4, 5]

>>> l2[3] = ‘xyz‘

>>> print(l2)
[1, 32, 3, ‘xyz‘, 5]

>>> print(l1)
[1, 2, 3]

>>> l1[1:] = [‘m‘,‘n‘,‘r‘]

>>> print(l1)
[1,‘m‘,‘n‘,‘r‘]

#通过分片进行删除

>>> l2[1:3]
[32, 3]

>>> l2[1:3] = []

>>> print(l2)
[1, ‘xyz‘, 5]

#通过内置的函数进行删除

>>> del(l2[1:])

>>> print(l2)
[1]

#通过列表类中的方法进行增删改

>>> l3 = [1,2,3,4,5,6]

>>> l3.append(77)

>>> print(l3)
[1, 2, 3, 4, 5, 6, 77]

>>> l4 = [‘x‘,‘y‘,‘z‘]

>>> l3.append(l4)

>>> print(l3)
[1, 2, 3, 4, 5, 6, 77, [‘x‘, ‘y‘, ‘z‘]]

#列表的复制(浅复制)

>>> l1 = [1,2,3,4,5]

>>> l2 = l1

>>> print(l1)
[1, 2, 3, 4, 5]

>>> print(l2)
[1, 2, 3, 4, 5]

#上面的方法不是真正的复制,应该采用如下的操作:

>>> import copy    

>>> print(l1)
[1, 2, 3, 4, 5]

>>> l5 = copy.deepcopy(l1)

>>> print(l5)
[1, 2, 3, 4, 5]

#变量解包

>>> l1,l2 = [[1,‘x‘,‘y‘],[2,‘z‘,‘r‘]]

>>> print(l1)
[1, ‘x‘, ‘y‘]

>>> type(l1)

>>> print(l2)
[2, ‘z‘, ‘r‘]

#找到列表中的元素并修改

[email protected]:~/scripts$ cat b.py
name = [1,2,3,4,5,1,5,6]
if 1 in name:
    num_of_ele = name.count(1)
    position_of_ele = name.index(1)
    name[position_of_ele] = 888
    print(name)

[email protected]:~/scripts$ python b.py
[888, 2, 3, 4, 5, 1, 5, 6]

#找到列表中的元素并批量修改

[email protected]:~/scripts$ cat b.py
name = [1,2,3,4,5,1,5,6]

for i in range(name.count(1)):
    ele_index = name.index(1)
    name[ele_index] = 8888888
print(name)
[email protected]:~/scripts$ python b.py
[8888888, 2, 3, 4, 5, 8888888, 5, 6]

元组类型:不可变对象

表达式符号:()

容器类型
  任意对象的有序集合,通过索引访问其中的元素,不可变对象
  异构混合类型,可以任意嵌套其它类型

常见操作:
  (): 空元组
  (1,): 单个元组需要尾部加上逗号,如果元素是数字没有加逗号则不是元组
  (1,2): 多个元组
  1,2,3,4: 在定义变量时没有加上小括号,默认是元组,最好不建议使用

tuple.count() 统计元组中元素的个数
tuple.index() 找出元组中元素的索引位置
t1 + t2 :元组相加,生成新元组
t1 * N :元组相乘,则重复N次

in : 成员关系判断,用法 object in container
not in: 用法 object not in container

变量解包:t1,t2
虽然元组本身不可变,但如果元组内嵌套了可变类型的元素,那么此类元素的修改不会返回新元组;

>>> t1 = (1,2,3,4)

>>> t1.count(3)
1

>>> t1.index(1)
0

#在没有嵌套的情况,元组是不可变对象,但是在嵌套了列表,列表是可变的,但元组在内存中的地址还是不变的

>>> t5 = (‘x‘,[1,2,3,4])

>>> print t5
(‘x‘, [1, 2, 3, 4])

>>> t5[1].pop()
4

>>> print(t5)
(‘x‘, [1, 2, 3])

#元组解包

>>> t1,t2 = ((1,2,3,4,5,‘xy‘),(‘s‘,‘y‘,‘w‘))

>>> print(t1)
(1, 2, 3, 4, 5, ‘xy‘)

>>> type(t1)
tuple

>>> print(t2)
(‘s‘, ‘y‘, ‘w‘)

字典类型:dict 可变对象

表达式符号:{}
  字典在其他编程语言中又称作关联数组或散列表

  通过键(key)实现元素存取,无序的,可变类型容器,长度可变,异构,嵌套

  {key1:value1,key2:value2,key3:value3,.....}

  {}: 空字典
  {‘x‘:32,‘y‘:[1,2,3,4]}

两种遍历方法:

第一种:
for k,v in dict.items():
    print(k,v)

第二种:高效
for key in dict:
    print(key,dict[key])

对字典中元素的操作:

dict.clear()     清除字典中所有元素
dict.copy()      字典复制,d2 = d1.copy(),如果是d2 = d1 是浅复制这两种都是浅复制,如果深复制需要copy模块
dict.fromkeys(S) 生成一个新字典
dict.get(key)    取得某个key的value
dict.has_key(key) 判断字典是否有这个key
dict.items()     将字典的键值拆成元组,全部元组组成一个列表
dict.keys()      返回所有的key为一个列表
dict.values()    返回所有的value为一个列表
dict.pop(key)    弹出某个key-value
dict.popitem()   随机弹出key-value
dict.update(key) 将一个字典合并到当前字典中
dict.iteritems() 生成key-value迭代器,可以用next()取下个key-value
dict.iterkeys()  生成key迭代器
dict.itervalues() 生成values迭代器

#字典也支持索引的方式获取

>>> d1 = {‘x‘:32,‘y‘:[1,2,3,4]}

>>> d1[‘x‘]
32

>>> d1[‘y‘]
[1, 2, 3, 4]

>>> d1[‘y‘][3:]
[4]

>>> len(d1)
2

#变量解包1

>>> d1.items()
[(‘y‘, [1, 2, 3, 4]), (‘x‘, 32)]

>>> t1,t2 = d1.items()

>>> print(t1)
(‘y‘, [1, 2, 3, 4])

>>> print(t2)
(‘x‘, 32)

#变量解包2

>>> d3,d4 = {‘x‘:32,‘y‘:80}

>>> print(d3)
y

>>> print(d4)
x

#合并字典,但是在有相同的key时会覆盖原有的key的值

>>> d1 = {‘x‘:1,‘y‘:2}

>>> d2 = {‘m‘:21,‘n‘:76,‘y‘:44}

>>> d1.update(d2)

>>> print(d1)
{‘y‘: 44, ‘x‘: 1, ‘m‘: 21, ‘n‘: 76}

集合类型:

集合是一组无序排序的可哈希hash的值
  支持集合关系测试:
  支持成员关系测试:in , not in
  支持迭代

  不支持:索引、元素获取、切片

集合的类型:set()可变的,frozenset()不可变
没有特定语法格式,只能通过工厂函数创建set,像字符串则直接创建即可
set集合必须中的元素必须是可迭代对象

集合运算的方法:

len(s)     返回s中项目数
s.copy()   复制一份s集合
s.difference(t)   求差集。返回所有在set中,但不再t中的项目
s.union(t)        求并集。返回所有在s或t中的项
s.intersection(t) 求交集。返回所有同时在s和t中的项目
s.isdisjoint(t)   如果s和t没有相同项,则返回True
s.issubset(t)     如果s是t的一个子集,则返回True
s.issuperset(t)   如果s是t的一个超集,则返回True
s.symmetric_difference(t) 求对称差集。返回所有在s或t中,但又不同时在这两个集合中的项

集合运算符:

s | t   s和t的并集
s & t   s和t的交集
s - t   求差集
s ^ t   求对称差集
len(s)  集合中项数
max(s)  最大值
min(s)  最小值    

可变集合对元素操作的方法:

s.add(item)    将item添加到s中。如果item已经在s中,则无任何效果
s.remove(item) 从s中删除item。如果item不是s的成员,则引发KeyError异常
s.pop()        返回一个任意的集合元素,并将其从s删除
s.clear()      删除s中的所有项
s.discard(item) 从s中删除item.如果item不是s的成员,则无任何效果
s.update()     将t中的所有项添加到s中。t可以是另一个集合、一个序列或者支持迭代的任意对象
s.difference_update(t)   从s中删除同时也在t中的所有项
s.intersection_update(t) 计算s与t的交集,并将结果放入s
s.sysmmetric_difference_update(t) 计算s与t的对称差集,并将结果放入s

不可变集合:
help(frozenset)

补充

一 、enumrate

  为一个可迭代的对象添加序号,可迭代的对象你可以理解成能用for循环的就是可迭代的。默认是编号是从0开始,可以设置从1开始

li = ["手机", "电脑", ‘鼠标垫‘, ‘游艇‘]
for k, i in enumerate(li,1):
    print(k,i)
1 手机
2 电脑
3 鼠标垫
4 游艇

二、range和xrange

  在python2中有xrange和range,其中range会一次在内存中开辟出了所需的所有资源,而xrange则是在for循环中循环一次则开辟一次所需的内存,而在Python3中没有xrange,只有range ,但是python3的range代表的就是xrange。range用来指定范围,生成指定的数字。

for i in range(10):     #循环输出所生成的 0-9
    print(i)

for i in range(1,10,2): #输出所生成的 1 3 5 7 9
    print(i)

作业

一、元素分类

  有如下值集合 [11,22,33,44,55,66,77,88,99],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。即: {‘k1‘: 大于66的所有值, ‘k2‘: 小于66的所有值}

l= [11,22,33,44,55,66,77,88,99]
bignum=[]
smallnum=[]
dir={}
for num in l:
    if num>66:
        bignum.append(num)
    if num<66:
        smallnum.append(num)
    else:
        pass
dir[‘k1‘]=bignum
dir[‘k2‘]=smallnum
print(dir)

二、查找

  查找元素,移动空格,并查找以 a或A开头 并且以 c 结尾的所有元素。

   li = ["alec", " aric", "Alex", "Tony", "rain"]

   tu = ("alec", " aric", "Alex", "Tony", "rain")

   dic = {‘k1‘: "alex", ‘k2‘: ‘ aric‘,  "k3": "Alex", "k4": "Tony"}

li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {‘k1‘: "alex", ‘k2‘: ‘ aric‘,  "k3": "Alex", "k4": "Tony"}

for i in li:
    if i.strip().capitalize().startswith(‘A‘) and i.strip().endswith(‘c‘):
        print(i)
for i in tu:
    if i.strip().capitalize().startswith(‘A‘) and i.strip().endswith(‘c‘):
        print(i)
for i in dic.values():
    if i.strip().capitalize().startswith(‘A‘) and i.strip().endswith(‘c‘):
        print (i)

三、输出商品列表,用户输入序号,显示用户选中的商品

  商品 li = ["手机", "电脑", ‘鼠标垫‘, ‘游艇‘]

#方法一
l1=[1,2,3,4]
l2=["手机", "电脑", ‘鼠标垫‘, ‘游艇‘]
d=dict(zip(l1,l2))
print(d)
num=input("请输入商品编号:")
print("你选择的商品为 %s" %d[int(num)])

#方法二
li = ["手机", "电脑", ‘鼠标垫‘, ‘游艇‘]
for k, i in enumerate(li):
    print(k,i)
k=input("请输入商品编号:")
print("你选择的商品为 %s" % li[int(k)])

四、购物车

功能要求:

  • 要求用户输入总资产,例如:2000
  • 显示商品列表,让用户根据序号选择商品,加入购物车
  • 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
  • 附加:可充值、某商品移除购物车
goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
]
gouwuche={"电脑":0,"鼠标":0,"游艇":0,"美女":0} #购物车中商品数量
jiage={"电脑":1999,"鼠标":10,"游艇":20,"美女":998} #商品价格表
sum=0 #购物车中商品总价
flag=True
total=int(input("请输入您的资产: "))
for k, i in enumerate(goods):
    print(k,i)
while flag:
    n=input("购买商品请输入1,购买完成请输入2,离开请输入3: ")
    if 1==int(n):
        k=input("请输入你要购买的商品编号: ")
        num = input(‘请输入你要购买商品的数量:‘)
        if int (k)>3:
            print("你输入的商品编号有误,请重新操作!")
            continue
        else:
            print("你选择的商品%s已添加到购物车" % goods[int(k)][‘name‘])
            gouwuche[goods[int(k)][‘name‘]]+=int(num)
            for k,v in gouwuche.items():
                sum+=jiage[k]*v
    elif 2==int(n):
        while 1:
            if total < sum:
                print("你的余额不足,请充值,或者移除某些商品!")
                n = input("充值请输入1,移除商品请输入2: ")
                if 1 == int(n):
                    k = input("请输入充值面额: ")
                    total += int(k)
                elif 2 == int(n):
                    k = input("请输入要移除商品的编号:")
                    num = input("请输入要移除商品的数量:")
                    if gouwuche[goods[int(k)][‘name‘]] < int(num):
                        print("你输入的数量大于购物车中商品的数量,请重新操作!")
                        continue
                    else:
                        sum-=jiage[goods[int(k)][‘name‘]]*int(num)
                else:
                    print("你输入的数字有误,请重新操作!")
                    break
            else:
                print("操作成功,你的余额还剩%s" % (total - sum))
                flag=False
                break
    elif 3==int(n):
        break
    else:
        print("你输入的数字有误请重新操作!")
        continue

 五、用户交互,显示省市县三级联动的选择

dic = {
    "河北": {
        "石家庄": ["鹿泉", "藁城", "元氏"],
        "邯郸": ["永年", "涉县", "磁县"],
    },
    "湖南": {
        "长沙":[‘a‘,‘b‘,‘c‘],
        "株洲":[‘d‘,‘e‘,‘f‘]
    },
    "湖北": {
        "武汉":[‘g‘,‘h‘,‘i‘],
        "黄石":[‘j‘,‘k‘,‘l‘]
    }
}
for k in dic.keys():
    print(k)
flag=True
while flag:
    n=input("请输入你所在省:")
    for k in dic.keys():
        if n in dic.keys():
            if k == n:
                for i in dic[n].keys():
                    print(i)
                w = input("请输入你所在的城市:")
                for i in dic[n].keys():
                    if w in dic[n].keys():
                        if i == w:
                            for k in dic[n][w]:
                                print(k)
                            s=input("请输入你所在的县:")
                            for j in dic[n][w]:
                                if s in dic[n][w]:
                                    if j==s:
                                        print("你所在的位置是:%s省%s市%s县" % (n,w,s))
                                        flag = False
                                        break
                                else:
                                    print(‘不存在,请重新输入‘)
                                    break
                    else:
                        print(‘不存在,请重新输入‘)
                        break
        else:
            print(‘不存在,请重新输入‘)
            break
时间: 2024-10-04 23:02:48

Python自动化运维之2、运算符与数据类型的相关文章

Python自动化运维课程学习--Day2

本文为参加老男孩Python自动化运维课程第二天学习内容的总结. 大致内容如下: 1.python模块初识 2.python程序运行流程 3.python数据类型(只讲了numbers, bool, strings, bytes, list, tuple, dict, set) 4.python数据运算 0.关于本文中所有运行Python代码的环境: --操作系统:Ubuntu 16.10 (Linux 4.8.0) --Python版本:3.5.2 --Python IDE: PyCharm

Python自动化运维课程学习--Day3

本文为参加老男孩Python自动化运维课程第三天学习内容的总结. 大致内容如下: 1.文件操作 2.字符编码转码相关操作 3.函数 0.关于本文中所有运行Python代码的环境: --操作系统:Ubuntu 16.10 (Linux 4.8.0) --Python版本:3.5.2 python2.7.12 --Python IDE: PyCharm 2016.3.2 一.文件操作: 1.文件操作流程:以只读.写(覆盖写).追加写.读写.追加读写.二进制读写等模式打开文件 ==> 得到文件句柄,并

python自动化运维之路~DAY7

python自动化运维之路~DAY7 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.客户端/服务器架构 C/S 架构是一种典型的两层架构,其全称是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据:另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信. C/S 架构也可以看做是胖客户端架构.因为客户端需要实现绝大多数的业务

python自动化运维之路~DAY10

python自动化运维之路~DAY10 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

python自动化运维之集中病毒扫描

1.因为我linux的python是2.6.6,所以因为有些模块是2.7的,先进行升级. 步骤地址:http://www.linuxidc.com/Linux/2014-07/104555.htm 2.安装pyclamd yum install -y clamav clamd clamav-update 安装clamavp的相关程序包 chkconfig --level 235 clamd on /usr/bin/freshclam pyClamd-0.3.15.tar.gz安装包安装 3.vi

(转)Python自动化运维之13、异常处理及反射(__import__,getattr,hasattr,setattr)

Python自动化运维之13.异常处理及反射(__import__,getattr,hasattr,setattr) 一.异常处理 python异常: python的运行时错误称作异常 (1)语法错误:软件的结构上有错误而导致不能被解释器解释或不能被编译器编译 (2)逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生成.计算或者输出结果需要的过程无法执行等 python异常是一个对象,表示错误或意外情况 (1)在python检测到一个错误时,将触发一个异常 python可以通常异常传导机

电子书 Python自动化运维:技术与最佳实践.pdf

本书在中国运维领域将有"划时代"的重要意义:一方面,这是国内一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的作者是中国运维领域的"偶像级"人物,本书是他在天涯社区和腾讯近10年工作经验的结晶.因为作者实战经验丰富,所以能高屋建瓴.直指痛处,围绕Python自动化运维这个主题,不仅详细介绍了系统基础信息.服务监控.数据报表.系统安全等基础模块,而且深入讲解了自动化操作.系统管理.配置管理.集群管理及大数据应用等高级功能.重要的是,完整重现了4个

Python自动化运维开发活动沙龙(2015-07-11周六)

Python自动化运维开发活动沙龙 2015-07-11(周六) 场地限制,最多仅限50人参加,报名从速! 亲,已是2015年了,做为运维工程师的你还在手动装机器.配服务.看监控.帮开发人肉上线么?还在发愁如何把每天重复的工作自动化起来么?还在想对开源软件进行二次开发定制却无能为力么?还在对开发人员提出的各种无理需求想进行反驳却因为自己不懂开发却被人鄙视么?还在为自己天天努力工作.到处救火却每月只能挣个十来K而感到不爽么? Maybe yes,maybe no! 但是不要不爽了,你的工资不高是因

Python自动化运维Django入门

随着IT运维技术日益更新,近几年运维自动化越来越火,而且学习python的人非常的火爆,尤其是python自动化运维开发,得到了很多前辈的推崇,尤其是老男孩培训中心.老男孩老师.Alex老师等,在这里非常感谢你们. 这里我也记录一下以前学习Django的一点点心得和方法,方便以后自己查阅,如果能帮助初学者是最好的了!好的,其他不多说了,博文滴走起. 一.系统实战环境 系统版本:CnetOS6.5 x86_64 Django版本:Django-1.5.8 MySQL版本:MySQL-5.1.73

云计算开发教程:Python自动化运维开发实战流程控制

今天这篇文章是给大家分享一些云计算开发教程,今天讲解的是:Python自动化运维开发实战流程控制. Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false. if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句-- else: 执行语句-- 其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范