Python自动化大师第1篇:Python基础与开发环境配置
Python Automation Master Part 1: Python Basics and Development Environment Setup
序言:为什么用Python实现自动化?
在现代工作环境中,重复性工作是消耗时间和精力的主要因素。如果能够自动化Excel文件整理、邮件发送、文件备份、数据收集等每天重复的工作,那该多好?Python是最适合这类自动化任务的编程语言。
Python最适合自动化的原因如下:
- 简单的语法:类似英语的直观语法,即使是编程初学者也能快速学习。
- 丰富的库:几乎所有任务都有相应的库,包括文件处理、网页爬虫、Excel操作、邮件发送等。
- 跨平台:在Windows、Mac、Linux上都能同样运行。
- 活跃的社区:遇到问题时,搜索就能找到大多数解决方案。
- 免费:作为开源软件,任何人都可以免费使用。
在这个系列中,我们将逐步学习使用Python进行实用自动化的技术。在第一篇中,我们将介绍Python安装、开发环境配置、基本语法复习,以及编写第一个自动化脚本。
1. 安装Python
1.1 在Windows上安装Python
在Windows上安装Python的方法如下:
- 访问Python官方网站。
- 点击"Download Python 3.x.x"按钮下载最新版本。
- 运行下载的安装文件。
- 重要!务必勾选"Add Python to PATH"复选框。
- 点击"Install Now"完成安装。
要验证安装,打开命令提示符(CMD)并输入以下命令:
python --version
pip --version
如果显示版本信息,则表示安装成功完成。
1.2 在Mac上安装Python
Mac默认安装了Python 2,但需要单独安装Python 3:
方法1:使用官方安装文件
- 从Python官方网站下载macOS版安装文件。
- 运行下载的.pkg文件进行安装。
方法2:使用Homebrew(推荐)
# 安装Homebrew(如果没有的话)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装Python
brew install python
1.3 在Linux上安装Python
大多数Linux发行版都默认安装了Python。如果需要最新版本:
Ubuntu/Debian:
sudo apt update
sudo apt install python3 python3-pip python3-venv
CentOS/RHEL:
sudo yum install python3 python3-pip
Fedora:
sudo dnf install python3 python3-pip
2. 虚拟环境配置
虚拟环境是为每个项目创建独立Python环境的工具。为什么需要虚拟环境?
- 可以为每个项目使用不同版本的包。
- 可以保持系统Python的整洁。
- 可以清晰地管理项目依赖。
2.1 venv(内置)
Python 3.3及以上版本内置了venv模块:
# 创建虚拟环境
python -m venv myenv
# 在Windows上激活
myenv\Scripts\activate
# 在Mac/Linux上激活
source myenv/bin/activate
# 停用
deactivate
虚拟环境激活后,提示符前面会显示(myenv)。
2.2 virtualenv
virtualenv是提供更多功能的第三方工具:
# 安装virtualenv
pip install virtualenv
# 创建虚拟环境
virtualenv myenv
# 使用特定Python版本创建
virtualenv -p python3.11 myenv
3. pip和包管理
pip是Python的包管理器。可以轻松安装和管理所需的库。
3.1 基本命令
# 安装包
pip install requests
# 安装特定版本
pip install requests==2.28.0
# 升级包
pip install --upgrade requests
# 卸载包
pip uninstall requests
# 查看已安装的包列表
pip list
# 查看包信息
pip show requests
3.2 使用requirements.txt
将项目的依赖管理为文件,可以在其他环境中轻松安装相同的包:
# 将当前安装的包保存到requirements.txt
pip freeze > requirements.txt
# 批量安装requirements.txt中的包
pip install -r requirements.txt
requirements.txt示例:
requests==2.31.0
beautifulsoup4==4.12.2
openpyxl==3.1.2
python-dotenv==1.0.0
4. VS Code开发环境配置
Visual Studio Code是Python开发中最受欢迎的免费编辑器。
4.1 安装VS Code
- 从VS Code官方网站下载。
- 运行适合您操作系统的安装文件。
4.2 必要的扩展程序
打开VS Code,在扩展程序(Extensions)选项卡中安装以下内容:
- Python(Microsoft):Python语言支持、调试、代码检查
- Pylance(Microsoft):增强的代码自动完成和类型检查
- Python Indent:自动缩进支持
- autoDocstring:自动生成文档字符串
4.3 VS Code设置
在settings.json中添加以下设置可以获得更好的开发体验:
{
"python.defaultInterpreterPath": "python",
"python.formatting.provider": "black",
"editor.formatOnSave": true,
"python.linting.enabled": true,
"python.linting.pylintEnabled": true
}
5. Python基本语法复习
让我们快速复习编写自动化脚本所需的核心语法。
5.1 变量和数据类型
# 基本数据类型
name = "Python" # 字符串 (str)
version = 3.12 # 浮点数 (float)
count = 100 # 整数 (int)
is_active = True # 布尔值 (bool)
# 集合数据类型
fruits = ["apple", "banana", "cherry"] # 列表
coordinates = (10, 20) # 元组
person = {"name": "张三", "age": 30} # 字典
unique_numbers = {1, 2, 3, 4, 5} # 集合
# 类型检查
print(type(name)) #
5.2 条件语句
age = 25
if age < 18:
print("未成年人。")
elif age < 65:
print("成年人。")
else:
print("老年人。")
# 三元运算符
status = "成年人" if age >= 18 else "未成年人"
5.3 循环语句
# for循环
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 使用range
for i in range(5):
print(i) # 0, 1, 2, 3, 4
# 使用enumerate(同时获取索引和值)
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
# while循环
count = 0
while count < 5:
print(count)
count += 1
# 列表推导式
squares = [x**2 for x in range(10)]
even_numbers = [x for x in range(20) if x % 2 == 0]
5.4 函数
# 基本函数
def greet(name):
return f"你好,{name}!"
# 默认参数
def greet_with_time(name, time="早上"):
return f"{time}好,{name}!"
# 可变参数
def sum_all(*args):
return sum(args)
# 关键字参数
def create_profile(**kwargs):
return kwargs
# Lambda函数
square = lambda x: x ** 2
add = lambda x, y: x + y
# 使用示例
print(greet("张三"))
print(sum_all(1, 2, 3, 4, 5))
print(create_profile(name="李四", age=25, city="上海"))
5.5 异常处理
try:
result = 10 / 0
except ZeroDivisionError:
print("不能除以0。")
except Exception as e:
print(f"发生错误:{e}")
else:
print("执行成功。")
finally:
print("始终执行。")
6. 编写第一个自动化脚本
现在让我们利用所学内容编写一个实用的自动化脚本。这是一个按扩展名整理指定文件夹中文件的脚本。
6.1 项目结构
file_organizer/
├── organize.py
├── requirements.txt
└── README.md
6.2 脚本代码
"""
文件整理自动化脚本
按扩展名分类指定文件夹中的文件。
"""
import os
import shutil
from datetime import datetime
# 扩展名到文件夹的映射
EXTENSION_FOLDERS = {
# 图片
'.jpg': 'Images',
'.jpeg': 'Images',
'.png': 'Images',
'.gif': 'Images',
'.bmp': 'Images',
'.svg': 'Images',
# 文档
'.pdf': 'Documents',
'.doc': 'Documents',
'.docx': 'Documents',
'.xls': 'Documents',
'.xlsx': 'Documents',
'.ppt': 'Documents',
'.pptx': 'Documents',
'.txt': 'Documents',
# 视频
'.mp4': 'Videos',
'.avi': 'Videos',
'.mkv': 'Videos',
'.mov': 'Videos',
# 音乐
'.mp3': 'Music',
'.wav': 'Music',
'.flac': 'Music',
# 压缩文件
'.zip': 'Archives',
'.rar': 'Archives',
'.7z': 'Archives',
'.tar': 'Archives',
'.gz': 'Archives',
# 程序
'.exe': 'Programs',
'.msi': 'Programs',
'.dmg': 'Programs',
}
def get_folder_for_extension(extension):
"""返回扩展名对应的文件夹名。"""
return EXTENSION_FOLDERS.get(extension.lower(), 'Others')
def organize_files(source_folder):
"""
按扩展名整理指定文件夹中的文件。
Args:
source_folder: 要整理的文件夹路径
Returns:
整理的文件数量
"""
if not os.path.exists(source_folder):
print(f"错误:文件夹'{source_folder}'不存在。")
return 0
organized_count = 0
# 遍历文件夹中的文件
for filename in os.listdir(source_folder):
file_path = os.path.join(source_folder, filename)
# 跳过文件夹
if os.path.isdir(file_path):
continue
# 提取扩展名
_, extension = os.path.splitext(filename)
if not extension:
continue
# 确定目标文件夹
target_folder_name = get_folder_for_extension(extension)
target_folder = os.path.join(source_folder, target_folder_name)
# 如果目标文件夹不存在则创建
if not os.path.exists(target_folder):
os.makedirs(target_folder)
print(f"创建文件夹:{target_folder_name}")
# 移动文件
target_path = os.path.join(target_folder, filename)
# 处理同名文件
if os.path.exists(target_path):
name, ext = os.path.splitext(filename)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
new_filename = f"{name}_{timestamp}{ext}"
target_path = os.path.join(target_folder, new_filename)
shutil.move(file_path, target_path)
print(f"移动:{filename} -> {target_folder_name}/")
organized_count += 1
return organized_count
def main():
"""主执行函数"""
print("=" * 50)
print("文件整理自动化脚本")
print("=" * 50)
# 输入要整理的文件夹路径
source_folder = input("请输入要整理的文件夹路径:").strip()
if not source_folder:
# 默认值:当前用户的下载文件夹
source_folder = os.path.join(os.path.expanduser("~"), "Downloads")
print(f"使用默认路径:{source_folder}")
# 确认
confirm = input(f"是否整理'{source_folder}'文件夹?(y/n):")
if confirm.lower() != 'y':
print("已取消。")
return
# 执行文件整理
print("\n开始整理文件...\n")
count = organize_files(source_folder)
print("\n" + "=" * 50)
print(f"完成!共整理了{count}个文件。")
print("=" * 50)
if __name__ == "__main__":
main()
6.3 运行脚本
# 运行脚本
python organize.py
7. 总结与下一篇预告
在这一篇中,我们奠定了Python自动化的基础。我们学到的内容总结如下:
- Python适合自动化的原因
- 在Windows、Mac、Linux上安装Python的方法
- 虚拟环境(venv、virtualenv)的必要性和使用方法
- 通过pip进行包管理
- VS Code开发环境配置
- Python基本语法复习
- 编写第一个自动化脚本
下一篇预告:在Python自动化大师第2篇中,我们将深入探讨文件和文件夹自动化。将学习使用os模块、pathlib、shutil进行高级文件处理技术,并一起创建实用的文件整理项目!