Day 1: Python脚本基础与自动化概述
学习目标
完成今天的学习后,你将能够:
- 理解自动化的核心概念和价值
- 掌握Python脚本编写基础
- 了解脚本执行和调试方法
- 认识自动化应用场景
技术原理
什么是自动化?
自动化是指使用技术手段减少人工干预的过程。在软件开发和IT运维中,自动化可以:
- 减少重复性工作
- 提高工作效率
- 降低人为错误
- 实现7×24小时无人值守
Python自动化的优势
- 简洁易学:Python语法简洁,学习曲线平缓
- 丰富的库:拥有大量自动化相关的库和工具
- 跨平台:支持Windows、Linux、macOS
- 社区活跃:拥有庞大的开发者社区
- 应用广泛:从脚本到大型系统都能胜任
Python脚本基础
1. 脚本结构
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
脚本说明:这是一个简单的Python脚本示例
作者:Your Name
日期:2024-01-01
"""
# 导入必要的模块
import os
import sys
# 定义主函数
def main():
"""主函数"""
print("Hello, Automation!")
# 脚本入口
if __name__ == "__main__":
main()2. 常用模块
- os:操作系统接口
- sys:系统相关参数和函数
- subprocess:子进程管理
- argparse:命令行参数解析
- logging:日志记录
脚本执行方式
1. 直接执行
bash
python script.py2. 指定解释器
bash
#!/usr/bin/env python3
./script.py3. 后台执行
bash
nohup python script.py > output.log 2>&1 &案例:第一个自动化脚本
创建一个简单的自动化脚本,用于:
- 检查系统信息
- 列出当前目录文件
- 检查磁盘空间
- 输出系统运行时间
应用场景
1. 系统管理
- 服务器监控
- 日志分析
- 备份管理
- 用户管理
2. 数据处理
- 数据清洗
- 格式转换
- 批量处理
- 数据验证
3. 网络运维
- 网络监控
- 配置管理
- 故障排查
- 性能优化
4. 开发辅助
- 代码生成
- 测试执行
- 部署脚本
- 文档生成
代码案例
案例1:系统信息检查脚本
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
系统信息检查脚本
功能:获取并显示系统基本信息
"""
import os
import sys
import platform
import psutil
def get_system_info():
"""获取系统信息"""
info = {
'系统': platform.system(),
'版本': platform.version(),
'架构': platform.machine(),
'处理器': platform.processor(),
'Python版本': platform.python_version(),
}
return info
def get_cpu_info():
"""获取CPU信息"""
cpu_info = {
'物理核心数': psutil.cpu_count(logical=False),
'逻辑核心数': psutil.cpu_count(logical=True),
'CPU使用率': psutil.cpu_percent(interval=1),
}
return cpu_info
def get_memory_info():
"""获取内存信息"""
memory = psutil.virtual_memory()
memory_info = {
'总内存': f"{memory.total / (1024**3):.2f} GB",
'已使用': f"{memory.used / (1024**3):.2f} GB",
'使用率': f"{memory.percent}%",
}
return memory_info
def get_disk_info():
"""获取磁盘信息"""
disk = psutil.disk_usage('/')
disk_info = {
'总空间': f"{disk.total / (1024**3):.2f} GB",
'已使用': f"{disk.used / (1024**3):.2f} GB",
'剩余空间': f"{disk.free / (1024**3):.2f} GB",
'使用率': f"{disk.percent}%",
}
return disk_info
def main():
"""主函数"""
print("=" * 50)
print("系统信息检查报告")
print("=" * 50)
# 系统信息
print("\n【系统信息】")
sys_info = get_system_info()
for key, value in sys_info.items():
print(f"{key}: {value}")
# CPU信息
print("\n【CPU信息】")
cpu_info = get_cpu_info()
for key, value in cpu_info.items():
print(f"{key}: {value}")
# 内存信息
print("\n【内存信息】")
memory_info = get_memory_info()
for key, value in memory_info.items():
print(f"{key}: {value}")
# 磁盘信息
print("\n【磁盘信息】")
disk_info = get_disk_info()
for key, value in disk_info.items():
print(f"{key}: {value}")
print("\n" + "=" * 50)
print("检查完成!")
print("=" * 50)
if __name__ == "__main__":
main()案例2:目录文件统计脚本
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
目录文件统计脚本
功能:统计指定目录下的文件信息
"""
import os
from collections import defaultdict
def count_files(directory):
"""统计目录下的文件"""
stats = {
'total_files': 0,
'total_dirs': 0,
'total_size': 0,
'file_types': defaultdict(int),
}
for root, dirs, files in os.walk(directory):
# 统计目录数
stats['total_dirs'] += len(dirs)
# 统计文件
for file in files:
stats['total_files'] += 1
# 获取文件扩展名
_, ext = os.path.splitext(file)
if ext:
stats['file_types'][ext] += 1
else:
stats['file_types']['无扩展名'] += 1
# 获取文件大小
file_path = os.path.join(root, file)
try:
size = os.path.getsize(file_path)
stats['total_size'] += size
except OSError:
pass
return stats
def format_size(size):
"""格式化文件大小"""
for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
if size < 1024:
return f"{size:.2f} {unit}"
size /= 1024
return f"{size:.2f} PB"
def main():
"""主函数"""
import sys
if len(sys.argv) > 1:
directory = sys.argv[1]
else:
directory = '.'
if not os.path.isdir(directory):
print(f"错误:'{directory}' 不是有效的目录")
return
print(f"正在统计目录:{os.path.abspath(directory)}")
print("-" * 50)
stats = count_files(directory)
print(f"文件总数:{stats['total_files']}")
print(f"目录总数:{stats['total_dirs']}")
print(f"总大小:{format_size(stats['total_size'])}")
print("\n文件类型统计:")
for ext, count in sorted(stats['file_types'].items(), key=lambda x: x[1], reverse=True):
print(f" {ext}: {count} 个")
if __name__ == "__main__":
main()课后练习
练习1:环境准备
- 确保Python 3.7+已安装
- 安装psutil库:
pip install psutil - 运行系统信息检查脚本
- 查看输出结果
练习2:脚本修改
- 修改系统信息检查脚本,添加网络信息
- 添加磁盘分区信息
- 将输出保存到文件
练习3:扩展功能
- 创建一个脚本,统计指定目录下的代码行数
- 支持多种编程语言(.py, .js, .java等)
- 按文件类型分组统计
常见问题
Q1: 如何让脚本在后台运行?
A: 使用nohup命令:
bash
nohup python script.py > output.log 2>&1 &Q2: 如何设置脚本为可执行?
A: 添加执行权限:
bash
chmod +x script.pyQ3: 如何在Windows上运行Python脚本?
A: 直接使用python命令:
cmd
python script.py下一步学习
完成今天的学习后,建议你:
- 熟悉Python脚本的基本结构
- 了解常用的标准库模块
- 尝试编写简单的自动化脚本
- 准备进入Day 2的学习:文件处理自动化
明天我们将深入学习文件和目录的自动化处理。