为什么运维工程师都在偷偷学Python?看完这篇基础语法解析,你就懂了
摘要
现在不管是做后端开发,还是搞运维、数据分析,Python几乎成了绕不开的工具。它语法简单,写起来快,还能干很多脏活累活——比如批量改文件名、自动拉日志、定时跑任务。这篇文章就面向刚接触Python的朋友,尤其是偏运维方向的同学,带你把环境搭好,顺带把变量、输出、格式化这些基础语法一次讲清楚。全程口语化,跟着敲就行。
引言
早些年大家写运维脚本多用Shell,但Shell处理复杂逻辑挺痛苦,遇到字符串处理、接口调用更是头大。后来Python慢慢成了运维圈的“标配”:Ansible、SaltStack底层都是Python,Docker、K8s的周边工具也大量用它。再加上AI和数据分析的浪潮,Python的热度一直居高不下。今天我们就从最基础的开始,不整虚的,先把环境搞定,再把代码跑起来。
先搞懂几个基础概念
计算机是怎么跑程序的?
你可以把计算机想象成一个工厂:
- 硬件是厂房和设备:CPU是工人,内存是操作台,硬盘是仓库。
- 操作系统(Windows、Linux这些)是车间主任,负责指挥工人干活。
- 我们写的程序(比如Python脚本)就是生产订单。
你写的Python代码本身只是一堆文本,得靠Python解析器这个“翻译”,把它变成机器能懂的指令,操作系统再安排硬件去执行。
为什么选Python?
简单说几点实在的:
- 语法接近英语,读起来不像看天书。
- 写同样的功能,Python代码量往往只有Java或者C++的三分之一甚至更少。
- 库特别多,你想做的事,大概率有人已经写好轮子了,拿来就能用。
- 运维领域几乎是刚需:批量管理服务器、自动部署、日志分析,全都能干。
Python能干嘛?(运维视角)
举几个日常例子:
- 自动备份:每天凌晨把指定目录打包,传到备份服务器。
- 日志分析:从几百兆的日志里把报错行摘出来,统计错误次数。
- 巡检脚本:定时检查服务器CPU、内存、磁盘使用情况,超阈值就发告警。
- 配合Ansible:批量在多台服务器上执行命令,不用一台台登录。
把Python环境装好
Python解析器是什么?
你写的.py文件,计算机看不懂,得靠解析器来“读”。解析器干几件事:
- 把代码拆成一个个“单词”(分词)。
- 检查语法对不对(比如有没有少写冒号)。
- 转换成一种中间格式(字节码)。
- 再交给执行器跑出结果。
我们一般用的是CPython,也就是官网那个版本,最稳。
Windows下安装Python(解压版)
如果你是Windows电脑,又不想折腾安装包,可以用解压版:
- 把下载好的Python压缩包解压到一个目录,比如
D:\python313。 - 复制这个路径。
- 打开“环境变量”——“系统变量”——找到
Path——编辑——新建——把刚才的路径粘进去。 - 再新建一个变量名叫
PYTHON_HOME,值也是D:\python313。 - 一路确定保存。
验证一下:
Win + R -> 输入 cmd -> 回车在命令行里敲:
python--version如果看到类似Python 3.13.3的字样,就说明搞定了。
装个顺手的编辑器:PyCharm
写代码总不能用记事本吧?PyCharm是个专门写Python的编辑器,社区版免费,功能足够我们用。
- 去JetBrains官网下载PyCharm Community Edition。
- 安装时注意勾选“创建桌面图标”和“.py文件关联”。
- 第一次启动选“不导入设置”,主题颜色随你喜好。
创建第一个项目
- 先在电脑上建个空文件夹,比如
F:\python_learn。 - 打开PyCharm -> 新建项目 -> 选择这个文件夹作为位置。
- Python解释器选你刚才装的那个(它会自动识别,如果没有就手动指到
python.exe)。 - 右键项目名 -> New -> Python File -> 取名
hello.py。
写你的第一行Python代码
在hello.py里输入:
print("Hello, Python!")右键文件 -> 选择“Run ‘hello’”,下方控制台就会输出:
Hello, Python!这就是最简单的Python程序:print()负责把括号里的内容打印到屏幕上。
你也可以在命令行里跑:
cdF:\python_learn python hello.py注释:写给以后自己看的笔记
代码是写给人看的,不是给机器看的。注释就是代码的说明书。
单行注释
# 这是单行注释,用来解释这一行代码干嘛用的name="张三"# 用户名多行注释
""" 这是多行注释 可以用来写一段功能的说明 或者临时注释掉一大段代码 """age=18在PyCharm里,选中几行代码,按Ctrl + /可以快速加/取消注释,非常好用。
变量:给数据起个名字
什么是变量?
变量就是一个“贴了标签的盒子”,盒子里放数据,标签就是变量名。
比如:
age=18意思是:把数字18放进名叫age的盒子里。
怎么给变量起名?
规矩有几个,记住就行:
- 只能用字母、数字和下划线,不能以数字开头。
- 区分大小写,
name和Name是两个不同的变量。 - 不能用Python的关键字(比如
if、for、while这些)。
合法的:user_name、age1
不合法的:1age、user-name
变量的基本使用
# 定义变量name="张三"age=20# 使用变量print(name)print(age)# 变量重新赋值(后面的会覆盖前面的)name="李四"print(name)一个小案例:交换两个变量的值
假设有两个杯子,一杯可乐,一杯牛奶,怎么互换?
答案是:找个空杯子(临时变量)。
cup1="可乐"cup2="牛奶"# 找个临时变量temp=cup1# 把cup2倒进cup1cup1=cup2# 把temp(原来的cup1)倒进cup2cup2=tempprint("cup1:",cup1)# 牛奶print("cup2:",cup2)# 可乐常见变量类型
Python不用提前声明变量类型,它自己会猜。但我们得知道它猜的是什么。
数字类型
age=18# int,整数height=175.5# float,小数⚠️ 注意:小数直接计算可能会有精度问题,比如0.1 + 0.2不等于0.3。如果涉及金额计算,最好先转成整数(比如以分为单位)再算。
字符串
用单引号、双引号、三引号括起来的都是字符串。
name='张三'desc="是一名运维工程师"long_text=""" 这是多行字符串 可以用来写大段文本 比如SQL语句、配置文件内容等 """布尔值
只有两个值:True(真)和False(假),首字母必须大写。
is_admin=Trueis_login=False一般用在判断条件里,比如“如果登录成功,就……”。
查看变量类型
不确定变量是什么类型?用type()看一眼:
name="张三"print(type(name))# <class 'str'>age=18print(type(age))# <class 'int'>格式化输出:把变量“拼”进字符串里
为什么要格式化?
假设你要在日志里输出用户信息,如果这么写:
name="张三"age=18print("姓名:"+name+",年龄:"+age)# 报错!字符串和数字不能直接加会直接报错。这时候就需要格式化输出。
推荐的写法:f-string
Python 3.6以后,最推荐用的是 f-string,简单直观:
name="张三"age=18height=175.5info=f"姓名:{name},年龄:{age},身高:{height}cm"print(info)只要在字符串前面加个f,变量直接写在{ }里就行。
其他写法(了解即可)
以前常用的.format():
info="姓名:{},年龄:{}".format(name,age)更早的%占位符(老代码里常见):
info="姓名:%s,年龄:%d,身高:%.2f"%(name,age,height)%s是字符串,%d是整数,%.2f是保留两位小数。
转义字符和换行控制
# \n 换行print("第一行\n第二行")# \t 制表符(相当于Tab键)print("姓名:\t张三")# 不让print自动换行print("加载中",end="...")print("完成")# 输出:加载中...完成实际应用场景举例
场景1:服务器信息收集脚本
写一个简单的脚本,输出服务器基本信息(模拟数据):
hostname="web-server-01"ip="192.168.1.100"cpu_usage=35.8mem_total=8192# MBmem_used=4096report=f""" ========== 服务器巡检报告 ========== 主机名:{hostname}IP地址:{ip}CPU使用率:{cpu_usage}% 内存使用:{mem_used}MB /{mem_total}MB 状态:正常 ================================== """print(report)这个脚本稍加改造,就能真的去读取系统信息,做成定时巡检任务。
场景2:批量生成配置文件
假设你要在10台服务器上部署相同的服务,只是IP不同:
servers=["192.168.1.101","192.168.1.102","192.168.1.103"]foripinservers:config=f""" server {{ listen 80; server_name{ip}; root /var/www/html; }} """print(f"---{ip}的配置 ---")print(config)实际使用时,可以把这些内容直接写到文件里。
场景3:简单的日志分析(模拟)
统计某一天的ERROR日志数量:
log_lines=["INFO: 服务启动成功","ERROR: 数据库连接失败","INFO: 收到用户请求","ERROR: 文件不存在","INFO: 请求处理完成"]error_count=0forlineinlog_lines:if"ERROR"inline:error_count+=1print(f"今日ERROR日志数量:{error_count}")真实场景中,你会从文件里一行行读日志,逻辑是一样的。
QA环节
Q:Python 2和Python 3选哪个?
A:直接选Python 3。Python 2早就停止维护了,现在的新项目全是Python 3。我们这里用的3.13,你用3.9以上都没问题。
Q:为什么我的print打印中文是乱码?
A:一般是文件编码问题。在PyCharm右下角把文件编码改成UTF-8,或者在代码最顶部加一行:
# -*- coding: utf-8 -*-Q:变量名随便起吗?
A:语法上只要符合规则就行,但最好起得有意义。a = 18不如age = 18好懂。团队协作时,清晰的变量名能省很多事。
Q:学完这些能干什么?
A:能写简单的自动化脚本了。比如定时清理日志、批量重命名文件、监控服务状态。接下来可以学条件判断、循环、函数,慢慢就能写更复杂的工具。
总结
今天我们从计算机的基本组成聊到Python的安装,再到变量、数据类型和格式化输出,最后还看了几个运维相关的实用小例子。这些都是Python最基础、最核心的内容,一定要动手敲一遍代码,光看是记不住的。
环境搭好了,第一个程序也跑起来了,接下来就是多写、多试、多查。Python不难,难的是开始写第一行代码。今天就到这儿,下次我们聊聊条件判断和循环,那才是真正让脚本“活”起来的东西。