解释器

#!/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自动化运维记录相关推荐

  1. GitHub Actions入门教程:自动化部署静态博客

    前天,我使用 GitHub Actions 实现了静态博客的自动化部署,觉得它非常强大,只要你提交到 GitHub,后面的部署完全由 GitHub 自动完成. 这里提的静态博客,就是通过生成工具(eg ...

  2. python开发个人博客_手把手教你用 Python + Flask 搭建个人博客

    Python 的语言特性使得自身编写 Web 框架极其容易,现在已经有上百种用 Python 编写的 Web 开发框架,其中用户量最大的两个就是 Django 和 Flask. Django 和 Fl ...

  3. Python + Django4 搭建个人博客(十):实现文章详情页面

    上篇我们引入了Bootstrap,对博文列表页面进行了一些美化和布局设计. Python + Django4 搭建个人博客(九):Bootstrap实现博客列表页面_李威威wiwi的博客-CSDN博客 ...

  4. python+selenium统计CSDN博客(上):统计阅读量

    由于CSDN改版,本文有些过时,请移步Python玩转CSDN,用selenium统计博客的阅读量 这个功能是比较容易实现的,按理说一个人的所有文章都在博客主页,每篇文章的标题大致如下 <div ...

  5. 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 ...

  6. python+shell 备份 CSDN 博客文章,CSDN博客备份工具

    python+shell 备份 CSDN 博客文章,CSDN博客备份工具 在 csdn 写了几年的博客了.多少也积累了两三百篇博文,近日,想把自己的这些文章全部备份下来,于是开始寻找解决方案. 我找到 ...

  7. 我的博客园开张了,记录每天学习,工作。

    我的博客园开张了,记录每天学习,工作. 转载于:https://www.cnblogs.com/littlepearl/archive/2012/04/02/2430152.html

  8. 基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录

    基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录 转载于:https://github.com/Meowv/Blog 在开始之前,我们实现一个之前的遗留问题,这个 ...

  9. Hexo+GitHub 博客部署 个人踩坑记录(一)

    Hexo+GitHub 博客部署 个人踩坑记录(一) 前言 博客的作用 编程学习本身是持续性的学习行为,说明所学习的内容是在持续地增加.这要求我们要学会阶段性总结自己所学的东西,复习并巩固.所以写文章 ...

  10. python的运维开发课程_Python自动化运维开发实战课程方案

    课程简介:? ? 随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分.面对越来越复杂的业务以及日趋多样化的用户需求,不断扩展的IT应用需要合理的IT运维保障IT服务灵活便捷.安全稳定 ...

最新文章

  1. excel vba 不可查看
  2. MySQL 时间类型 DATE、DATETIME和TIMESTAMP
  3. Effective Modern C++ 第一章 C++11/14/17中的类型推断
  4. python 直线虚线_python – matplotlib中的虚线而不是缺失值
  5. 【MySQL】Unknown column 'column_name' in 'field list'
  6. phpcms加载系统类与加载应用类的区别
  7. 【unprofessional use Blog003】基因数据库NCBI相关介绍
  8. linux 配置回指路由,不配置回指路由多网段网络如何互联?
  9. LeetCode 299猜数字游戏
  10. 大一下c语言笔记本电脑,大学新生用什么笔记本电脑好
  11. 大数据与认识论一、主体与对象
  12. 2022广州大学计算机网络实验--Windows网络测试工具
  13. 读书笔记-MongoDb-简介
  14. 亚马逊常见各国标准产品认证标准|干货贴|运营必看|
  15. 如何得到HP小型机的序列号
  16. 排序系列一: 选择排序法
  17. TensorFlow张量的维度变换
  18. css svg使用_使用CSS使SVG响应
  19. 如何进行简单的功能仿制(网页制作)
  20. dedecm建站优化技巧教程六大步骤详解

热门文章

  1. openwrt系统安装到云服务器,云服务器安装openwrt
  2. Android dex2jar反编译dex文件报错 Detail Error Information in File .\classes-error.zip
  3. Spring+SpringMVC+MongoDB案例
  4. 微信公众号登陆、模板发送、access_token获取 PHP代码
  5. 时间 java 时间段_Java 如何判断当前时间是否在指定时间段内
  6. 华中科技大学计算机学院陈迪,华中科技大学2011届“优秀毕业生”公示名单
  7. 华为牛人的十年工作感悟
  8. PWM原理 PWM频率与占空比详解
  9. huawei.xmind
  10. 阿里巴巴高级算法专家威视:组建技术团队的一些思考