运维Python大全_python运维脚本大全-程序员宅基地

技术标签: python  笔记  运维  linux  运维认知  IT  

运维Python大全

运维Python大全

INSTALL PYTHONE3

安装依赖包

yum  -y install gcc gcc-c++  zlib-devel openssl-devel readline-devel libffi-devel sqlite-devel tcl-devel tk-devel  
wget https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz
tar zxf Python-3.8.13.tgz
cd Python-3.8.13
./configure --prefix=/usr/local  
make&&make install 

安装 Pycharm
Pycharm 设置中文

  1. baidu.com search Pycharm2017.3 汉化包
  2. 下载resource_cn.jar
  3. 把resource_cn.jar 拷贝到/root/bin/pycharm2017/lib中
  4. 如果经过第三步,仍然是英文界面,可以将lib目录中的resource_en.jar先剪切到别处
  5. 启动Pycharm,将报错
  6. 关闭pycharm后,把resource_en.jar再拷贝进去

Pycharm使用
加注释 : 选择行数 crtl +? 去掉注释:crtl+?
; 允许同一行但不推荐


Python syntax

例如;
分开写
a=3
b=4 推荐 这种写法

一行写(不推荐)
a=3;b=4 # 不推荐,可读性差
Python中 “字符串” 必须有引号,单双引号表示相同的含义,
如果不加引号,Python会把它当成一个名称,如果该名称没有定义将会报错

print('hello world')               #语句各项之间默认用空格分隔
print('hello','world')                
print('hello','world',sep='***')  #语句各项之间也可以自定义分隔符
print('hello'+'world')                #字符串可以使用+进行拼接 
print('hello world',end='AAA')  #print语句默认最后加入一个回车\n,可以用end来自定义结束

username = input('请输入用户名:')
print('欢迎登录',username)
print('欢迎登录'+ username)


标题 合法的变量名,有三个要求

  1. 首字符必须是字母或下划线
  2. 其他字符可以是字母、数字或下划线
  3. 区分大小写

1. 推荐采用的全名方法

-变量名全部采用小写字母
-简短、有意义
-多个单词间用下划线分隔
-变量名用名词,函数名用谓词(动词+名词)
-类名采用驼峰形式

n=n+1 或者n+=1 n*=1 #等价于n=n*1
赋值语句自右向左运算,首先取出n的值,再计算n+1的值得到11,最后11赋值给n

2. 标准算术运算符 + - * / // % **

5/2 值为2.5
5//2 值为2 取整除 - 返回商的整数部分(向下取整)
5%2 值为1 求余,也被称作模运算,结果为1
2**3 值为8 2的3次方,乘方、幂运算

3. 比较运算符

< <= > >= == != <>
10<20<30 支持连续比较
10<20>15 相当于10<20 and 20>15 不推荐10<20>15这样的写

4. 逻辑运算符

and not or
and 两边为true
not 假变正
or 一个为正就为正

今天写到   print()    input()
  https://www.jianshu.com/      搜索“ python百例 "  从下面开始做  1-5 
 print('hello world!')
if 3>0:
 print("ok")
 print("yes")
x = 4
y = 5
print("hello world!")                    
print("hello","world!")             # 逗号自动添加默认的分隔符:空格
print("hello"+"world")                # 加号表示字符拼接
print("hello","world",sep="***")  #单词间用 *** 分隔
print("#" * 50)                          #   *号表示重复50遍
print("how are you?",end="")  #   默认print会打印回车,end=“ ” 表示不要回车

number = input("请输入数字: ")  # input用于获取键盘输入
print(number)
print(type(number))  # input获得的数据是字符型
print(number + 10)  # 报错,不能把字符和数字做运算
print(int(number) + 10)  # int可将字符串10转换成数字10
print(number + str(10))  # str将10转换为字符串后实现字符串拼接

################################################################################################

一 、python 数据类型

1. 数字

(1)int整数(有符号整数,没有小数点)
(2)bool布尔值 :Ture/false Ture=1 , false=0
(3)float浮点数:有小数点
(4)complex复数:共轭复数
对于整数,没有任何前缀Python默认识别为10进制数
以0o开头表示8进制,0b开头表示2进制 , 以0x开头表示16进制

2. 字符串

在引号中一系列字符,单双引号没有区别
三引号:三个连续的单引号或者双引号。它能够保存输入的格式,允许多行输入

3.字符串切片

下标和切片操作
第一个字符索引是0 ,最后一个字符的索引是-1
索引下标运算符[ ] 切片运算符[:] [::2] 表示步长值

py_str="Python"
len(py_str)        #查询长度
print("len(py_str)")  #打印py_str变量的长度
py_str[0]           #下标从0开始"Python"[0] 意义一样
print(py_str[0])   #可以截取字符串第一个字符
py_str[6]            #索引超出范围,报错
py_str[len(py_str) -1]   #字符串总长度减一,得到最后一个字符的下标
py_str[-1]       #也可以得到最后一个下标

py_str[2:4]   #表示下标包含,结束下标不包含
py_str[2:6]   得到 ‘thon’  
py_str[2:600]  #下标超出范围,切片不报错 ‘thon’
py_str[2:]     #结束下标不写,表示取到结尾
py_str[0:2]   得到‘py’  
py_str[:2]    得到 ‘py’  #开始下标不写,表示从开头开始
py_str[2:5]   得到  "tho"  #从2开始到5结束 5-2=3
py_str[::2]   得到   "pto"    #表示步长值是2
py_str[1::2]   得到  "yhn"   #从1开始步长值是2
py_str[::-1]   得到  "nohtyp"  #表示从右向左取步长值为-1 

py_str + " is cool"    #+号表示简单拼接
print(py_str + " is cool" )  得到 Python is cool   
"*" * 50         # *号重复50次
print("*" * 50)  得到 **********************************
print(py_str * 3) 得到 PythonPythonPython



"t"  in py_str       
print("t"  in py_str )   得到 True
"to"  in py_str     
print("to"  in py_str  ) 得到 False 
print("to"  not in py_str  )   得到 True 

4. 列表

可以将列表当成普通的“数组" ,它能保存任意数量,任意类型的Python对象
列表: 它是一个容器,可以存放各种数据

列表

alist = [10 ,20 ,"li" ,"da",[1,2]]
print(len(alist))   得到5
alist[2:4]   
print(alist[2:4])  得到 ["li","da"]
alist[-1] =100     #列表项可以重新赋值
print(alist)   得到[10,20,"li","da","100"]
alist.append(200)    #向列表尾部增加一项
print(alist)   得到 [10,20,"li","da","100","200"]  

5. 元组

相当于是静态的列表,它的项目不可变

atuple =(10,20,"li","da")
atuple[-1]
print(atuple[-1])  得到  da
atuple[0] =100  #报错,元组不能修改

6. 字典

采用key:val 对存储的数据类型,key不能重复

adict={
   
    "name":"大锤","age":18}
adict["name"]          # 通过key取出value
print(adict["name"])  得到 大锤
18 in adict   得到 Flase  
"age" in adict  得到True
adict["sex"]="female"   #key不在字典中则增加一项   
print(adict)     得到{
   
    "name":"大锤","age":18,"sex":"female"}
adict["age"]=20            # age已是字典的key,修改age的值
print(adict)    得到{
   
    "name":"大锤","age":20,"sex":"female"}

—————————————————————————————

按数据类型比较 -----------------------重要、必须背下来
按存储模型分类
-标量类型 : 数值、字符串 标量:只有一种类型,不能存储其他类型。数字、字符串
-容器类型:列表、元组、字典 容器:能包含各种数据。列表、元组、字典

按更新模型分类
-可变类型:列表、字典
-不可变类型:数字、字符串、元组

按访问模型分类
-直接访问:数字
-顺序访问: 字符串、列表、元组
-映射访问:字典


例如:

alist = [10 ,20 ,"li" ,"da",[1,2]]   
blist = alist
blist.append(30)
print(alist) 得到[10 ,20 ,"li" ,"da",[1,2],30]
print(blist)  得到  [10 ,20 ,"li" ,"da",[1,2],30]   变得一样所以写程序容易出现bug

blist=alist.copy()
blist.append(30)
print(alist) 得到[10 ,20 ,"li" ,"da",[1,2]]
print(blist)  得到  [10 ,20 ,"li" ,"da",[1,2],30]  

二、判断语句

1. if 判断

words = "tom\njeff\njay\nmikes"
if "tom" in words :
    print("yes")
if "tom" not in words :
    print("not in")
else:
    print("tom in words")

if -0.0 : 
    print("0k")             #任何值为0的数字都是False,非0为True  //这里不打印

if -0.01 :
    print("-0.01 is ok")    #这里可以打印True
   
if  '  ' :
    print("space is true")   #任何非空对象都是True ,空位False ,打印   
if  '' :
    print("空字符串是False")  #False不打印  
if None:
    print("None也是False,表示空")   #False不打印

判断合法用户

  1. 创建login2.py
  2. 提示用户输入用户名和密码
  3. 获取相关信息后,将其保存存在变量中
  4. 如果用户的用户名为bob,密码为123456,则输出Login successful,否则输出Login inorrect

###############################################################################################

2. while循环

判断合法用户

  1. 创建login2.py文件
  2. 提示用户输入用户名和密码
  3. 获取相关信息后,将其保存在变量中
  4. 如果用户输的用户名为bob,密码为123456,则输出
    Login successful ,否则输出Login inorrect
import getpass   #导入名为getpass 的模块
username = input("username:")
password = getpass.getpass("password:")

if username == "bob" and password == "123456" :
     print("Login successful")
else:
     print("Login inorrect")

import random
number = random.randint(1,100)   #生成1-100间的随机数字,包含1和100
print("number ->",number)
answer = int (input("猜数1-100:"))    #将用户输入的字符数字转成真正的int数字

if answer > number:
    print("猜大了")
elif answer< number:
    print("猜小了")
else:
    print("猜对了")

import random
number = random.randint(1,100)
while True:
    answer = int(input("\033[34;1m猜数1-100:\033[0m"))
    if answer > number :
        print("\033[34;1m猜大了\033[0m")
    elif answer <number:
        print("\033[34;1m猜小了\033[0m")
    else:
        print("\033[31;1m猜对了[\033[0m")
        break

import random
all_choise = ['石头', "箭头", "布"]
win_list = [['石头', '剪刀'], ['布', '石头'], ['剪刀', '布']]

prompt = """1.石头
2.剪刀
3.布
请出拳(0/1/2):"""

computer = random.choice(all_choise)
index = int(input(prompt))
player = all_choise[index]
print("你的出拳:", player, "计算机出拳:", computer)
if player == computer:
    print("\033[32;1m平局\033[0m")
elif [player, computer] in win_list:
    print("\033[35;1m你赢了\033[0m")
else:
    print("\033[31;1m你输了\033[0m")
    

import random
tries = 0   #设置计数器,用户最多猜3次
number = random.randint(1,10)

while tries<3:
    answer = int(input("猜数(1-10):"))
    if answer > number:
        print("猜大了")
    elif answer < number:
        print("猜小了")
    else:
        print("猜对了")
        break
    tries +=1
else:
    print("数字是:",number)

————————————————————————————————————---------------

3. 三元运算符,也叫条件表达式

例如:

      a = 100
      b = 80 
if a<b:
           smaller = a
else:
           smaller =b

以上 写法,可简写为

smaller = a if a<b else b 

score = int(input("请输入你的成绩:"))

if 70>score>=60:
    print("及格")
elif 80>score>=70:
    print("良")
elif 90>score>=80:
    print("好")
elif score>=90:
    print("优秀")
else:
    print("你要努力了")

##################################################################################################

4. for循环

for i in  :
range(10)  生成列表[0,1,2,3,4,5,6,7,8,9,]
range(6,10)  生成[6,7,8,9,]

例如:
range(5)
print(list(range(5))) //用list函数 把range(5) 转换成列表
得到 [0, 1, 2, 3, 4]

for i in range(3):                  #[0,1,2]  外侧循环控制打印哪一行
    for j in range(i+1):            #[0] [0,1] [0,1,2] 内层循环控制行内打印几次
        print("hello",end=" ")     #多个hello打印到同一行
        print(j)
    print()                                 #每一行结尾需要打印回车,否则就成为一行
"%sX%s=%s"  %(1,2,2)    #得到 1X2=2   注释符里面不可以加变量可以加 字符串输出%s占位

打印9*9 乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print("%sx%s=%s" %(j,i,i*j),end="\t")   
    print()


三、实战案例应用

列表解析:快速生成列表

[10]    #得到[10]
[10+5]  #得到[15]
[10+5 for i in range(1,11)]   #得到 [15, 15, 15, 15, 15, 15, 15, 15, 15, 15] 

[10+i  for i in range(1,11)]   #得到 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

[10+i  for i in range(1,11) if i % 2 == 1]  #得到  [11, 13, 15, 17, 19]

["192.168.1."+str(i) for i in range(1,5)]   #得到  ['192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4'] 


四、文件对象

1. 文件操作的基本步骤 -> 打开、读写、关闭

open及file file Python2才有,Python3已经不用了,用open
open read readline readlines close

2. 实操:在Linux服务器操作

cp /etc/hosts /tmp/hosts
#打开文件,没有指定打开方式,默认以r 读的方式打开,以r打开,不能写。文件不存在则报错
python3
f = open(“/tmp/hosts”) #默认加r打开了
data = f.read() # read 默认将全部内容读入内存
f.close() #关闭文件
print(data)
data #可以查看到原始数据,也就是\n 没有被转换成换行。

f = open("/tmp/hosts")         
f.read(10)              #读取10个字节
f.read(10)              #继续向后读10个字节
f.readline()            #读一行
f.readlines
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41560737/article/details/108196612

智能推荐

在ubuntu 8.04下安装Oracle 11g二-程序员宅基地

文章浏览阅读408次。 在ubuntu 8.04下安装Oracle 11g2008年05月22日 星期四 11:02oracle 11g 数据库虽然提供了linux x86的版本,但是支持的linux版本只有Red Hat,Novell and Solaris 这几个,debian 和 ubuntu 不在支持之列,所以在ubuntu下安装就相对麻烦一些,请照着下文的方法一步一步的安装,不

初一计算机知识点下册,初一英语下册语法知识点全汇总-程序员宅基地

文章浏览阅读166次。新东方在线中考网整理了《初一英语下册语法知识点全汇总》,供同学们参考。一. 情态动词can的用法can+动词原形,它不随主语的人称和数而变化。1. 含有can的肯定句:主语+can+谓语动词的原形+其他。2. 含有can的否定句:主语+can't+动词的原形+其他。3. 变一般疑问句时,把can提前:Can+主语+动词原形+其他? 肯定回答:Yes,主语+can。否定回答:No,主语+can't...._七年级下册计算机知识点

NX/UG二次开发—其他—UFUN函数调用Grip程序_uf调用grip-程序员宅基地

文章浏览阅读3k次。在平时开发中,可能会遇到UFUN函数没有的功能,比如创建PTP的加工程序(我目前没找到,哪位大神可以指点一下),可以使用Grip创建PTP,然后用UFUN函数UF_call_grip调用Grip程序。具体如下截图(左侧UFUN,右侧Grip程序):..._uf调用grip

Android RatingBar的基本使用和自定义样式,kotlin中文教程_ratingbar样式修改-程序员宅基地

文章浏览阅读156次。第一个:原生普通样式(随着主题不同,样式会变)第二个:原生普通样式-小icon第三个:自定义RatingBar 颜色第四个:自定义RatingBar DrawableRatingBar 各样式实现===============原生样式原生样式其实没什么好说的,使用系统提供的style 即可<RatingBarstyle="?android:attr/ratingBarStyleIndicator"android:layout_width=“wrap_cont.._ratingbar样式修改

OpenGL环境搭建:vs2017+glfw3.2.1+glad4.5_vs2017的opengl环境搭建(完整篇)-程序员宅基地

文章浏览阅读4.6k次,点赞6次,收藏11次。安装vs2017:参考vs2017下载和安装。安装cmake3.12.3:cmake是一个工程文件生成工具。用户可以使用预定义好的cmake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。可以从它官方网站的下载页上获取。这里我选择的是Win32安装程序,如图所示:然后就是运行安装程序进行安装就行。配置glfw3...._vs2017的opengl环境搭建(完整篇)

在linux-4.19.78中使用UBIFS_ubifs warning-程序员宅基地

文章浏览阅读976次。MLC NAND,UBIFS_ubifs warning

随便推点

计算机系统内存储器介绍,计算机系统的两种存储器形式介绍-程序员宅基地

文章浏览阅读2.2k次。计算机系统的两种存储器形式介绍时间:2016-1-6计算机系统的存储器一般应包括两个部分;一个是包含在计算机主机中的主存储器,简称内存,它直接和运算器,控制器及输入输出设备联系,容量小,但存取速度快,一般只存放那些急需要处理的数据或正在运行的程序;另一个是包含在外设中的外存储器,简称外存,它间接和运算器,控制器联系,存取速度虽然慢,但存储容量大,是用来存放大量暂时还不用的数据和程序,一旦要用时,就..._计算机存储器系统采用的是主辅结构,主存速度快、容量相对较小,用于 1 分 程序,外

西门子PLC的编程工具是什么?_西门子plc编程软件-程序员宅基地

文章浏览阅读5.6k次。1. STEP 7(Simatic Manager):STEP 7或者Simatic Manager是西门子PLC编程最常用的软件开发环境。4. STEP 7 MicroWin:STEP 7 MicroWn是一款专门针对微型PLC(S7-200系列PLC)的编程软件,是Simatic Manager的简化版。如果需要与PLC系统配合使用,则需要与PLC编程工具进行配合使用。除了上述软件之外,西门子还提供了一些配套软件和工具,如PLC模拟器、硬件调试工具等,以帮助PLC编程人员快速地进行调试和测试。_西门子plc编程软件

HashMap扩容_hashma扩容-程序员宅基地

文章浏览阅读36次。【代码】HashMap扩容。_hashma扩容

Eclipse maven项目中依赖包不全,如何重新加载?_maven资源加载不全,怎么重新加载-程序员宅基地

文章浏览阅读2.9k次。1mvn dependency:copy-dependencies2 项目右键 -> Maven -> Disable Maven Nature3 项目右键 -> Configure -> Convert to Maven Project_maven资源加载不全,怎么重新加载

mysql dml全称中文_MySQL语言分类——DML-程序员宅基地

文章浏览阅读527次。DMLDML的全称是Database management Language,数据库管理语言。主要包括以下操作:insert、delete、update、optimize。本篇对其逐一介绍INSERT数据库表插入数据的方式:1、insert的完整语法:(做项目的过程中将字段名全写上,这样比较容易看懂)单条记录插入语法:insert into table_name (column_name1,......_dml的全称是

【小工匠聊Modbus】04-调试工具-程序员宅基地

文章浏览阅读136次。可以参考: http://git.oschina.net/jrain-group/ 组织下的Java Modbus支持库Modbus-系列文章1、虚拟成对串口(1)下载虚拟串口软件VSPD(可在百度中搜索)image.png(2)打开软件,添加虚拟串口。在设备管理中,看到如下表示添加成功。..._最好用的 modebus调试工具

推荐文章

热门文章

相关标签