python自动化运维博客_python自动化运维记录
解释器
#!/usr/bin/env python
# coding: utf-8
# -*- coding: utf-8 -*-
基础学习脚本
+加号拼接
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
name = input("Please input your name")
pwd = getpass.getpass("please input your passwd")
print("My name is" + name, "and passwd is" + pwd)
输出
# chmod +x study1.py
# pytohon study1.py
Please input your namehuang
please input your passwd
My name ishuang and passwd is123
逗号 空格分割:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
name = input("Please input your name")
pwd = getpass.getpass("please input your passwd")
print("My name is", name, "and passwd is", pwd)
输出:
# python study1.py
Please input your namehuang
please input your passwd
My name is huang and passwd is 123
格式化输出:
#!/usr/bin/env python
# coding: utf-8
name = input("please input your name: ")
age = input("please input your age: ")
job = input("please input your job: ")
msg = '''
# 默认字符串形式输出%s
Information of %s
-----------------
Name: %s
Age: %s
Job: %s
''' %(name,name,age,job)
print(msg)
输出:
# python study2.py
please input your name: huang
please input your age: 12
please input your job: engineer
Information of huang
-----------------
Name: huang
Age: 12
Job: engineer
python3中格式化输出默认接收的都是字符串,如果是数字则需要另外强制转化为init()转化为数字类型
#!/usr/bin/env python
# coding: utf-8
name = input("please input your name: ")
age = input("please input your age: ")
job = input("please input your job: ")
msg = '''
Information of %s
-----------------
Name: %s
Age: %d
Job: %s
''' %(name,name,age,job)
print(msg)
运行:
please input your name: 1
please input your age: 12
please input your job: 12
Traceback (most recent call last):
File "study2.py", line 14, in
''' %(name,name,age,job)
TypeError: %d format: a number is required, not str
报错原因: age没有转化格式为数字,导致执行代码时报错,init()转化了则不会报错
#!/usr/bin/env python
# coding: utf-8
name = input("please input your name: ")
age = input("please input your age: ")
age = int(age)
job = input("please input your job: ")
msg = '''
Information of %s
-----------------
Name: %s
Age: %d
Job: %s
''' %(name,name,age,job)
print(msg)
运行:
# python study2.py
please input your name: huang
please input your age: 12
please input your job: student
Information of huang
-----------------
Name: huang
Age: 12
Job: student
模块
sys
sys.argv 从外部向程序内部传递参数
#!/usr/bin/env python
# coding: utf-8
import sys
print(sys.argv)
print(sys.argv[0])
print(sys.argv[2])
运行:[获取执行脚本时带上的参数被获取到]
# python module_test1.py hello world
['module_test1.py', 'hello', 'world']
module_test1.py
world
#!/usr/bin/env python
import sys
for i in range(len(sys.argv)):
print('argv{0}: type is {1}, value is {2}'.format(i, type(sys.argv[i]), sys.argv[i]))
# python sys_argv.py 1 2 s
argv0: type is , value is sys_argv.py
argv1: type is , value is 1
argv2: type is , value is 2
argv3: type is , value is s
循环
while 循环
eg1
[1:] 意义:遍历,去掉列表中的第一个元素(下表为0),去后面的元素进行操作
#!/usr/bin/env python
# coding: utf-8
url = "lannister.poizon.com"
while url:
print(url)
url = url[1:]
运行:
lannister.poizon.com
annister.poizon.com
nnister.poizon.com
nister.poizon.com
ister.poizon.com
ster.poizon.com
ter.poizon.com
er.poizon.com
r.poizon.com
.poizon.com
poizon.com
oizon.com
izon.com
zon.com
on.com
n.com
.com
com
om
m
eg2
#!/usr/bin/env python
# coding: utf-8
x = 0;y = 10
while x < 10:
print(x)
x += 1
0
1
2
3
4
5
6
7
8
9
[:-1]:遍历,去掉列表中的最后一个元素,去前面一个的元素进行操作
#!/usr/bin/env python
# coding: utf-8
url = 'lannister.poizon.com'
while url:
print(url)
url = url[:-1]
else:
print('game over')
运行:
lannister.poizon.com
lannister.poizon.co
lannister.poizon.c
lannister.poizon.
lannister.poizon
lannister.poizo
lannister.poiz
lannister.poi
lannister.po
lannister.p
lannister.
lannister
lanniste
lannist
lannis
lanni
lann
lan
la
l
game over
函数
pop函数
使用: 用于一处列表中的一个元素,默认最后一个元素,并且返回该元素值
pop(0) 删除第一个元素
#!/usr/bin/env python
# coding: utf-8
list = [1, 2, 3, 4, 5]
count = 0
while list:
print(list[0])
list.pop()
list2 = [1, 2, 3, 4, 5]
count = 0
while list2:
print(list[0])
list.pop(0)
运行:
# part 1:
1
1
1
1
1
# part 2:
1
2
3
4
5
场景练习脚本:
#!/usr/bin/env python
# coding: utf-8
import getpass
name = 'sihye'
pwd = '123456'
count = 0
while True:
if count < 3:
print('please enter your name and passwd ')
username = input('username: ')
passwd = getpass.getpass('passwd: ')
if username == name and passwd == pwd:
print('welcome come back')
break;
else:
print('wrong')
else:
print('you have already failed 3 times...logging out...')
break;
count += 1
运行:
# python user_login.py
please enter your name and passwd
username: sihye
passwd:
wrong
please enter your name and passwd
username: sihye
passwd:
wrong
please enter your name and passwd
username: sihye
passwd:
welcome come back
场景二:猜年龄游戏
#!/usr/bin/env python
# coding: utf-8
age = 8
count = 0
for i in range(20):
if count < 3:
a = int(input("age: "))
if a == age:
print('success')
break
elif a < age:
print('smaller~')
else:
print('bigger~')
else:
b = input('continue? ')
if b == 'yes':
count = 0
continue
else:
print('see u next time')
break
count += 1
运行:
# python guess_age.py
age: 1
smaller~
age: 2
smaller~
age: 1
smaller~
continue? no
see u next time
# python guess_age.py
age: 8
success
运维场景脚本
新创脚本时可自动生成python解释器
# 在用户的家目录下创建'.vimrc'文件
# root用户
# ---------
# vim ~/.vimrc
function HeaderPython()
call setline(1, "#!/usr/bin/env python")
call append(1, "#-*- coding:utf8 -*-")
normal G
normal o
normal o
endf
autocmd bufnewfile *.py call HeaderPython()
保存退出即可,之后创建.py文件就会自动生成解释器
输出某个目录下所有子目录下的文件,并输出绝对路径
方法一:用OS库
#!/usr/bin/env python
#-*- coding:utf8 -*-
import os
for root,dirs,files in os.walk('/server/scripts'):
for name in files:
print(os.path.join(root,name))
方法二:用pathlib
path.rglob()相当于 os.walk,可添加筛选条件
#!/usr/bin/env python
#-*- coding:utf8 -*-
from pathlib import Path
path = Path(r'/server')
for p in path.rglob("*.py"):
print(str(p))
pathlib库
引用:
from pathlib import Path
p = Path()
p.name 获取文件名,包含所有目录名和文件名
p.parent 获取每个文件的目录名称,一直到最后一层目录都输出,有几个文件就会输出几次
p.parents 会输出每一个子目录,返回一个iterable
场景:
#!/usr/bin/env python
#-*- coding:utf8 -*-
from pathlib import Path
path = Path(r'/server/scripts/python')
for p in path.rglob("*"):
p.parents
for i in p.parents:
print(i)
运行:
server/scripts/python
/server/scripts
/server
/
/server/scripts/python
/server/scripts
/server
/
/server/scripts/python/study_base_scripts
/server/scripts/python
/server/scripts
/server
/
场景二:
#!/usr/bin/env python
#-*- coding:utf8 -*-
from pathlib import Path
path = Path(r'/server/scripts/python')
for p in path.rglob("*"):
print(p.parent)
运行:
/server/scripts/python
/server/scripts/python
/server/scripts/python/study_base_scripts
/server/scripts/python/study_base_scripts
/server/scripts/python/study_base_scripts
场景三:判断文件是否存在
#!/usr/bin/env python
#-*- coding:utf8 -*-
from pathlib import Path
path = Path(r'/server')
path = Path(path,'scripts') # 字符串拼接,也就是后面检验的是/server/scripts是否存在
print(path.exists()) #判断文件是否存在
print(path.is_file()) #判断是否是文件
print(path.is_dir()) #判断是否是目录
运行:
# python find_file.py
True
False
True
场景四:遍历文件夹
path.iterdir(): 相当域os.listdir,
path.glob('*'), 相当于os.listdir, 可添加条件
path.rglob('*'),相当于 os.walk , 可添加筛选条件
#!/usr/bin/env python
#-*- coding:utf8 -*-
from pathlib import Path
path = Path(r'/server/scripts')
for p in path.glob("*ell"):
print(p)
print('------------------')
for n in path.iterdir():
print(n)
print('------------------')
for i in path.rglob("*.py"):
print(i)
print('------------------')
运行:
# python find_file.py
/server/scripts/shell
------------------
/server/scripts/python
/server/scripts/shell
------------------
/server/scripts/python/study_base_scripts/while_test2.py
/server/scripts/python/study_base_scripts/guess_age.py
/server/scripts/python/study_base_scripts/user_login.py
/server/scripts/python/study_base_scripts/name_test2.py
/server/scripts/python/study_base_scripts/sys_argv.py
/server/scripts/python/study_base_scripts/while_test.py
/server/scripts/python/study_base_scripts/sys_os.py
/server/scripts/python/study_base_scripts/while_test3.py
/server/scripts/python/study_base_scripts/name_test1.py
/server/scripts/python/study_base_scripts/stdout.py
/server/scripts/python/study_base_scripts/module_test1.py
/server/scripts/python/ops_base_scripts/find_file.py
/server/scripts/python/ops_base_scripts/dic_list.py
------------------
场景五:创建文件夹
#!/usr/bin/env python
#-*- coding:utf8 -*-
from pathlib import Path
# 第一种方式:前提是tmp文件夹必须存在,否则会报错。
path = Path(r'/server/tmp/python')
path.mkdir(exist_ok=True)
# 第二种方式:若是tmp文件不存在会递归创建文件夹。
path = Path(r'/server/tmp/python')
path.mkdir(exist_ok=True, parents=True)
场景五: 获取文件的详细信息
#!/usr/bin/env python
# coding:utf-8
from pathlib import Path
path = Path(r'/server/scripts/python')
print(path.stat())
print(path.stat().st_size)
print(path.stat().st_ctime)
运行:
场景六: 查看某个目录下有几个匹配类型文件
#!/usr/bin/env python
#-*- coding:utf8 -*-
from pathlib import Path
path = Path(r'/server/scripts')
for p in path.rglob('*.py'):
print(p.parent)
运行:
# python review.py | sort -rn | uniq -c
13 /server/scripts/python/study_base_scripts
4 /server/scripts/python/ops_base_scripts
方法
python自动化运维博客_python自动化运维记录相关推荐
- GitHub Actions入门教程:自动化部署静态博客
前天,我使用 GitHub Actions 实现了静态博客的自动化部署,觉得它非常强大,只要你提交到 GitHub,后面的部署完全由 GitHub 自动完成. 这里提的静态博客,就是通过生成工具(eg ...
- python开发个人博客_手把手教你用 Python + Flask 搭建个人博客
Python 的语言特性使得自身编写 Web 框架极其容易,现在已经有上百种用 Python 编写的 Web 开发框架,其中用户量最大的两个就是 Django 和 Flask. Django 和 Fl ...
- Python + Django4 搭建个人博客(十):实现文章详情页面
上篇我们引入了Bootstrap,对博文列表页面进行了一些美化和布局设计. Python + Django4 搭建个人博客(九):Bootstrap实现博客列表页面_李威威wiwi的博客-CSDN博客 ...
- python+selenium统计CSDN博客(上):统计阅读量
由于CSDN改版,本文有些过时,请移步Python玩转CSDN,用selenium统计博客的阅读量 这个功能是比较容易实现的,按理说一个人的所有文章都在博客主页,每篇文章的标题大致如下 <div ...
- Python语法解析器PLY——lex and yacc in Python - 娄振林专栏 - 博客频道 - CSDN.NET
Python语法解析器PLY--lex and yacc in Python - 娄振林专栏 - 博客频道 - CSDN.NET Python语法解析器PLY--lex and yacc in Pyt ...
- python+shell 备份 CSDN 博客文章,CSDN博客备份工具
python+shell 备份 CSDN 博客文章,CSDN博客备份工具 在 csdn 写了几年的博客了.多少也积累了两三百篇博文,近日,想把自己的这些文章全部备份下来,于是开始寻找解决方案. 我找到 ...
- 我的博客园开张了,记录每天学习,工作。
我的博客园开张了,记录每天学习,工作. 转载于:https://www.cnblogs.com/littlepearl/archive/2012/04/02/2430152.html
- 基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录
基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录 转载于:https://github.com/Meowv/Blog 在开始之前,我们实现一个之前的遗留问题,这个 ...
- Hexo+GitHub 博客部署 个人踩坑记录(一)
Hexo+GitHub 博客部署 个人踩坑记录(一) 前言 博客的作用 编程学习本身是持续性的学习行为,说明所学习的内容是在持续地增加.这要求我们要学会阶段性总结自己所学的东西,复习并巩固.所以写文章 ...
- python的运维开发课程_Python自动化运维开发实战课程方案
课程简介:? ? 随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分.面对越来越复杂的业务以及日趋多样化的用户需求,不断扩展的IT应用需要合理的IT运维保障IT服务灵活便捷.安全稳定 ...
最新文章
- excel vba 不可查看
- MySQL 时间类型 DATE、DATETIME和TIMESTAMP
- Effective Modern C++ 第一章 C++11/14/17中的类型推断
- python 直线虚线_python – matplotlib中的虚线而不是缺失值
- 【MySQL】Unknown column 'column_name' in 'field list'
- phpcms加载系统类与加载应用类的区别
- 【unprofessional use Blog003】基因数据库NCBI相关介绍
- linux 配置回指路由,不配置回指路由多网段网络如何互联?
- LeetCode 299猜数字游戏
- 大一下c语言笔记本电脑,大学新生用什么笔记本电脑好
- 大数据与认识论一、主体与对象
- 2022广州大学计算机网络实验--Windows网络测试工具
- 读书笔记-MongoDb-简介
- 亚马逊常见各国标准产品认证标准|干货贴|运营必看|
- 如何得到HP小型机的序列号
- 排序系列一: 选择排序法
- TensorFlow张量的维度变换
- css svg使用_使用CSS使SVG响应
- 如何进行简单的功能仿制(网页制作)
- dedecm建站优化技巧教程六大步骤详解
热门文章
- openwrt系统安装到云服务器,云服务器安装openwrt
- Android dex2jar反编译dex文件报错 Detail Error Information in File .\classes-error.zip
- Spring+SpringMVC+MongoDB案例
- 微信公众号登陆、模板发送、access_token获取 PHP代码
- 时间 java 时间段_Java 如何判断当前时间是否在指定时间段内
- 华中科技大学计算机学院陈迪,华中科技大学2011届“优秀毕业生”公示名单
- 华为牛人的十年工作感悟
- PWM原理 PWM频率与占空比详解
- huawei.xmind
- 阿里巴巴高级算法专家威视:组建技术团队的一些思考