Python 基础
Python 编程基础——从环境准备到核心语法再到实操练习,面向运维工程师。
结合运维工程师使用场景,聚焦高频语法、实用案例、避坑要点,不讲冗余理论,全程搭配示例,学完可直接写运维脚本。
环境说明:基于 Python3,Linux 系统默认环境,执行方式:交互式终端 /
.py脚本文件。
一、前置准备
1. 运行方式
- 交互式终端(临时测试代码)
python3
>>> print("hello ops")
输入 exit() 退出。
- 脚本文件(正式运维脚本,推荐) 新建
test.py,编写代码后执行:
python3 test.py
- 脚本头部声明(Linux 规范) 文件首行添加解释器路径,可直接
./test.py执行:
#!/usr/bin/env python3
2. 注释(脚本必备)
-
单行注释:
#,用于说明代码、屏蔽代码 -
多行注释:
""" 内容 """或''' 内容 ''',常用于脚本头部说明
#!/usr/bin/env python3
# 这是单行注释:服务器巡检脚本
"""
脚本功能:批量检查端口状态
作者:运维
日期:2025
"""
print("脚本开始执行")
二、变量与数据类型(运维核心)
变量:存储数据的容器,无需声明类型,赋值即定义。 运维常用 5 大类型:字符串、数字、布尔、列表、字典,其余了解即可。
1. 命名规范
-
由字母、数字、下划线组成,不能以数字开头
-
区分大小写,建议使用下划线命名(如
server_ip、disk_size) -
禁止使用 Python 关键字(
if/for/while等)
2. 基础数据类型
(1)字符串 str(运维最高频)
文本、IP、端口、日志内容、配置信息都用字符串。
定义方式
单引号 ''、双引号 ""、三引号 """"""(支持换行)
# 常规字符串
ip = "192.168.1.100"
port = '9092'
# 多行字符串(常用于拼接配置、日志)
log_info = """
2025-06-11 10:00:00 error
service kafka down
"""
常用操作(必学)
s = "192.168.1.100"
# 1. 拼接字符串
name = "kafka"
msg = "服务名:" + name
print(msg) # 服务名:kafka
# 2. 格式化输出(运维打印日志/信息首选)
# 方式1:f-string(Python3.6+ 推荐,简洁)
server = "MySQL"
status = "running"
print(f"服务 {server} 状态:{status}")
# 3. 分割 split() (解析日志、IP、配置常用)
ip_str = "192.168.1.100:22"
ip_list = ip_str.split(":") # 按冒号分割
print(ip_list[0]) # 192.168.1.100
print(ip_list[1]) # 22
# 4. 替换 replace() (批量修改配置)
conf = "port=80"
new_conf = conf.replace("80", "8080")
print(new_conf) # port=8080
# 5. 去除首尾空格/换行 strip() (处理日志、脏数据)
data = " kafka \n"
print(data.strip()) # kafka
# 6. 判断是否包含内容 in (日志关键字匹配)
log = "java.net.ConnectException"
if "error" in log:
print("检测到错误日志")
(2)数字 int /float
-
int整数:进程 ID、端口、数量、行数 -
float浮点数:磁盘使用率、内存占比
port = 9092 # 整数
disk_usage = 78.5 # 浮点数
# 算术运算 + - * / %
a = 10
b = 3
print(a + b) # 13
print(a % b) # 1 取余(判断奇偶、轮询任务常用)
(3)布尔值 bool
只有两个值:True(真)、False(假) 用于条件判断:服务是否启动、端口是否开放、文件是否存在
is_running = True
is_exist = False
if is_running:
print("服务正常运行")
(4)列表 list [](批量存储,运维必备)
有序可变数组,用来存储多台主机 IP、端口列表、日志行、文件路径。
定义与基础操作
# 主机IP列表
hosts = ["192.168.1.10", "192.168.1.11", "192.168.1.12"]
# 取值:下标从 0 开始
print(hosts[0]) # 第一个IP:192.168.1.10
# 追加元素(动态添加主机)
hosts.append("192.168.1.13")
# 删除元素
hosts.remove("192.168.1.10")
# 获取列表长度(主机数量)
print(len(hosts))
核心场景:遍历列表(批量执行任务)
hosts = ["192.168.1.10", "192.168.1.11"]
for ip in hosts:
print(f"正在处理主机:{ip}")
(5)字典 dict {key:value}(配置 / 结构化数据首选)
键值对结构,适合存储主机详情、配置项、接口返回 JSON 数据,查询速度极快。
-
key(键):唯一,一般用字符串 -
value(值):可以是任意类型(字符串、数字、列表)
定义与基础操作
# 单台服务信息
server = {
"name": "kafka",
"port": 9092,
"status": "running"
}
# 取值
print(server["name"]) # kafka
print(server["port"]) # 9092
# 修改值
server["status"] = "down"
# 新增键值对
server["ip"] = "192.168.1.100"
# 遍历字典(运维解析配置/资产)
for k, v in server.items():
print(f"{k} : {v}")
补充:空值 None
表示空、不存在,常用于判断命令返回、连接状态
res = None
if res is None:
print("未获取到数据")
三、运算符
1. 比较运算符(条件判断核心)
结果为布尔值 True/False
| 符号 | 含义 |
== | 等于(注意:单个 = 是赋值) |
!= | 不等于 |
> < >= <= | 大于、小于、大于等于、小于等于 |
port = 9092
if port == 9092:
print("端口匹配")
usage = 85
if usage > 80:
print("磁盘使用率过高,告警")
2. 逻辑运算符(多条件组合)
用于同时判断多个条件:
-
and:并且(所有条件都成立) -
or:或者(任意一个条件成立) -
not:取反
# 端口开放 并且 服务状态正常
port_ok = True
service_ok = True
if port_ok and service_ok:
print("服务健康")
# 磁盘使用率 >90 或 内存使用率 >90,触发告警
disk = 92
mem = 80
if disk > 90 or mem > 90:
print("资源告警")
四、流程控制(脚本逻辑骨架)
1. 分支判断 if / elif / else
根据条件执行不同逻辑,判断服务状态、文件存在、资源阈值必用。
基础语法
# 单条件判断
status = "running"
if status == "running":
print("服务正常")
else:
print("服务异常")
# 多条件判断(elif 多分支)
usage = 85
if usage < 70:
print("资源正常")
elif 70 <= usage < 90:
print("资源使用率偏高")
else:
print("资源严重告警")
运维常用场景:判断文件 / 目录是否存在
后续搭配 os 模块使用,先掌握语法逻辑。
2. 循环语句
(1)for 循环(运维最常用)
多用于遍历列表、文件行、主机列表、日志,固定次数循环。
语法 1:遍历序列(列表 / 字符串)
# 遍历主机列表,批量操作
host_list = ["192.168.1.10", "192.168.1.11"]
for host in host_list:
print(f"开始巡检主机 {host}")
语法 2:range() 生成数字序列
用于固定次数循环、端口遍历
# 遍历端口 80-85
for port in range(80, 86):
print(f"检测端口:{port}")
(2)while 循环
条件循环:满足条件就一直执行,多用于持续监听、重试、死循环守护进程。
# 死循环:持续监控(运维守护脚本常用)
while True:
print("持续监控服务中...")
# 可搭配 time.sleep() 休眠,避免死循环占满CPU
3. 循环控制关键字
-
break:跳出整个循环 -
continue:跳过当前一次循环,进入下一次
# 遍历主机,找到指定IP就停止
hosts = ["10.0.0.1", "10.0.0.2", "10.0.0.3"]
for ip in hosts:
if ip == "10.0.0.2":
print("找到目标主机")
break # 终止循环
print(ip)
五、函数 def(代码复用核心)
把重复逻辑封装成函数,避免代码冗余。运维场景:封装「执行命令」「端口检测」「巡检」通用逻辑。
1. 基础语法
def 函数名(参数):
函数体逻辑
return 返回值 # 可选,返回结果
2. 简单示例
示例 1:无参函数(固定逻辑)
# 封装:打印巡检头部
def print_title():
print("===== 服务器巡检开始 =====")
# 调用函数
print_title()
示例 2:带参数 + 返回值(运维主力用法)
# 封装:检测端口是否开放(简化逻辑)
def check_port(host, port):
if port > 0:
return True
else:
return False
# 调用函数
result = check_port("192.168.1.100", 9092)
if result:
print("端口正常")
3. 函数作用域
-
函数内部变量:局部变量,外部无法使用
-
函数外部变量:全局变量,函数内可读取(修改需加
global,运维尽量少用)
六、异常处理 try except(生产脚本强制必加)
运维脚本批量操作多台主机时,单台报错不能让整个脚本终止,异常捕获是容错关键。
1. 基础语法
try:
# 可能报错的代码
逻辑代码
except 异常类型:
# 报错后执行的代码
异常处理逻辑
finally:
# 无论是否报错,最终都会执行(可选,用于释放连接、关闭文件)
2. 运维实战示例
hosts = ["192.168.1.10", "192.168.1.11"]
for ip in hosts:
try:
# 模拟远程执行命令(可能连接超时/失败)
print(f"正在连接 {ip}")
num = 1 / 0 # 模拟报错
except Exception as e: # 捕获所有异常,e 为错误信息
print(f"主机 {ip} 执行失败,错误:{e}")
continue # 跳过当前主机,继续下一台
说明:
Exception通用捕获所有异常,运维脚本优先使用。
七、模块与导入 import
Python 功能靠模块 / 库实现,内置模块无需安装,第三方库需要 pip3 install。
1. 导入语法
# 方式1:导入整个模块
import os
os.path.exists("/etc/passwd")
# 方式2:从模块中导入指定功能
from time import sleep
sleep(3) # 休眠3秒
2. 运维高频内置模块(先记导入方式)
后续重点学习,此处仅做引入:
import os # 文件、目录、路径操作
import subprocess # 执行Linux命令
import psutil # 系统资源监控
import re # 正则表达式(日志解析)
import json # 解析JSON数据
import time, datetime # 时间处理
八、综合实战小案例(整合所有语法)
结合上面知识点,写一个简易磁盘巡检脚本,贴近真实运维工作:
#!/usr/bin/env python3
# 磁盘使用率巡检脚本
# 1. 定义函数:判断磁盘是否告警
def check_disk(usage):
"""判断磁盘使用率,返回状态"""
if usage >= 90:
return "严重告警"
elif usage >= 80:
return "一般告警"
else:
return "正常"
# 2. 磁盘列表
disk_list = [75, 86, 92, 60]
# 3. 循环巡检 + 异常捕获
print("===== 磁盘巡检任务 =====")
for idx, use in enumerate(disk_list):
try:
status = check_disk(use)
print(f"分区{idx+1} 使用率:{use}% 状态:{status}")
except Exception as e:
print(f"分区{idx+1} 检测失败:{e}")
print("巡检结束")
九、学习总结 & 运维学习建议
1. 必掌握清单(优先级从高到低)
-
注释、变量、字符串操作、列表、字典
-
if分支、for/while循环、break/continue -
函数封装
def -
异常捕获
try except(生产脚本必备) -
模块导入
import
2. 学习建议
-
边学边练:每学一个语法,写小段代码测试;
-
结合运维场景:用语法模拟「主机遍历、端口检测、日志处理、资源判断」;
-
拒绝复杂语法:类、继承、装饰器、异步等开发向内容,运维初期不用学;
-
替代 Shell:把日常简单 Shell 功能改成 Python 脚本,学以致用。
3. 下一步学习方向
基础语法掌握后,继续学习: os 文件操作 → subprocess 执行系统命令 → 正则 re → 远程 SSH、接口请求。
关联文档
- Python 学习大纲 — Python 学习路线
- Shell 基础 — 与 Shell 脚本对比