导读
你电脑里大概率已经装着 Python——它是目前全球最流行的编程语言之一,小到自动整理文件夹、批量改文件名,大到搭建网站和训练 AI 模型,都离不开它。本篇教程从零开始:先在你的系统上装上 Python3,搞清楚为什么要用虚拟环境(venv),快速过一遍核心语法,然后实战写一个批量处理文件的脚本。全程命令带注释,读完就能上手。
目标读者:完全没有编程经验的小白,或者用过 Python 但被报错劝退的朋友。
预计用时:阅读约 25 分钟 + 动手 30 分钟。
一、安装 Python3
1. Windows:官网安装包(推荐勾选 PATH)
打开浏览器访问 python.org/downloads,下载 Windows installer(64-bit)(页面会自动识别你的系统)。
双击运行安装程序时,务必勾选底部的「Add python.exe to PATH」(见截图标注位置)。如果漏勾也没关系——点「Modify」重新添加即可。
国内镜像提示:python.org 直连偶尔慢或超时,可以改用华为云镜像站 https://mirrors.huaweicloud.com/python/,里面也有最新的 Windows 安装包,下载速度通常更快。
2. macOS:brew 一行搞定
如果你已经装过 Homebrew(macOS 的包管理器),只需在终端输入:
brew install python3 # 下载并安装最新 Python3
python3 --version # 验证:应显示 Python 3.x.x
如果没有 brew:运行
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装后再执行上面的brew install python3。
3. Linux:系统包管理器
大多数发行版已经把 Python3 作为默认组件:
# Debian / Ubuntu:
sudo apt update && sudo apt install python3 python3-venv python3-pip -y
# Fedora:
sudo dnf install python3 -y
# Arch Linux:
sudo pacman -S python python-pip
安装完成后同样用 python3 --version 验证。
小贴士:Ubuntu 20.04+ 已预装 Python3,无需额外安装。
二、为什么必须用虚拟环境(venv)?
一句话解释
虚拟环境 = 一个独立的 Python 小房间。你在里面装的库(package)只影响这个房间,不会碰脏系统或其他项目。
不用虚拟环境会怎样?
想象你有两个项目:
- 项目 A 需要
requests==2.28.0 - 项目 B 需要
requests==2.31.0
如果所有项目都共用同一个 Python 环境,装了 2.31 就会把 A 用的 2.28 覆盖掉——A 直接崩溃。这就是所谓的"依赖地狱"。
创建和使用 venv
# 第 1 步:进入你的项目目录
cd my-project
# 第 2 步:创建一个名叫 .venv 的虚拟环境(点号开头表示隐藏)
python3 -m venv .venv
# 第 3 步:激活它(相当于"推开小房间的门")
# Windows CMD:
# my-project\.venv\Scripts\activate.bat
# Windows PowerShell:
my-project\.venv\Scripts\Activate.ps1
# macOS / Linux:
source .venv/bin/activate
# 激活成功后,命令行前面会出现 (.venv) 前缀:
# 这时候安装的库只会进这个环境,不会影响系统 Python!
退出虚拟环境非常简单:
deactivate # 关上门,回到正常状态
PowerShell 权限说明(Windows):首次激活可能报"不允许执行脚本"的错误。这是因为 Windows 默认禁止运行未签名的
.ps1文件。解决方法是执行Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass——这里的-Scope Process意味着只对当前终端窗口生效,关闭 PowerShell 后策略自动恢复,不会动你的全局设置。
三、Python3 语法速览
下面挑最常用的语法,每行都带中文注释。你可以复制到一个 .py 文件里跟着跑。
3.1 变量和数据类型
name = "小明" # str — 字符串(文字)
age = 25 # int — 整数
height = 1.78 # float — 浮点数(带小数)
is_student = True # bool — 布尔值(True/False)
hobbies = ["读书", "游泳", "编程"] # list — 列表(有序集合)
score = {"语文": 90, "数学": 85} # dict — 字典(键值对映射)
3.2 条件判断
age = 20
if age >= 18: # 如果年龄>=18
print("成年人") # 执行这里
elif age >= 16: # 否则如果>=16
print("青少年")
else: # 都不满足则执行这里
print("未成年")
缩进规则:Python 用缩进(而不是大括号
{})来表示代码块。统一用 4 个空格,别混用 Tab。
3.3 循环
# for 循环:遍历列表里的每个元素
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits: # 读作:"对于 fruits 中的每一个 fruit"
print(f"我喜欢吃{fruit}") # f-string:字符串里嵌入变量
# while 循环:条件为 True 时一直重复
count = 0
while count < 3: # 当 count 小于 3 时继续
print(f"计数:{count}")
count += 1 # 等价于 count = count + 1
3.4 函数
def greet(name, greeting="你好"): # def 定义函数;greeting 有默认值
"""向某人问好(这是文档字符串,描述函数的用途)"""
return f"{greeting},{name}!" # return 返回结果
print(greet("小红")) # 输出:你好,小红!
print(greet("小刚", "早上好")) # 输出:早上好,小刚!
3.5 列表推导式 & 字典推导式
推导式是一行写循环+筛选的神器:
# 列表推导式:生成 0~9 的平方数
squares = [x**2 for x in range(10)] # 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
# 带条件的列表推导式:只要偶数的平方
even_squares = [x**2 for x in range(10) if x % 2 == 0] # 0, 4, 16, 36, 64
# 字典推导式:反向构建 {数字: 对应的中文}
chinese_map = {i: s for i, s in enumerate(["零","一","二","三","四","五","六","七","八","九"])}
# {0:'零', 1:'一', ..., 9:'九'}
四、实战:文件批量处理
学完基础语法,我们来做两件实际工作中经常遇到的事:批量重命名和按扩展名整理文件。
4.1 批量重命名:给文件加日期前缀
假设你的 Downloads 文件夹里有乱七八糟的图片,你想加上今天的日期编号:
import os
from datetime import datetime
target_dir = "./samples" # 目标文件夹(改成你自己的路径)
prefix = datetime.now().strftime("%Y%m%d") # 今天日期如 "20260826"
files = os.listdir(target_dir) # 列出文件夹里所有文件名
for i, filename in enumerate(files): # enumerate 同时给出序号(i)和文件名(filename)
ext = os.path.splitext(filename)[1] # 取出扩展名如 ".jpg"
new_name = f"{prefix}_{i+1:03d}{ext}" # 新名字:20260826_001.jpg
old_path = os.path.join(target_dir, filename) # 旧完整路径
new_path = os.path.join(target_dir, new_name) # 新完整路径
os.rename(old_path, new_path) # 重命名(移动文件也是这招)
print(f"完成!重命名了 {len(files)} 个文件。")
关键模块解释:
os:操作系统接口,提供文件/目录操作(列出、重命名、检查是否存在等)os.path.splitext():把文件名拆成"主体+扩展名","photo.jpg"→("photo", ".jpg")os.rename():重命名或移动文件
4.2 按扩展名归类整理
import os, shutil # shutil 提供高级文件操作(复制/移动)
target_dir = "./downloads" # 你要整理的文件夹
extension_map = { # 扩展名 → 目标文件夹
".jpg": "images", ".png": "images", ".gif": "images", ".webp": "images",
".pdf": "documents",
".xlsx": "spreadsheets", ".csv": "spreadsheets",
".mp4": "videos", ".mp3": "audio",
}
for root, dirs, files in os.walk(target_dir): # os.walk 递归遍历所有子文件夹
for filename in files:
_, ext = os.path.splitext(filename) # 取扩展名
dest_folder = extension_map.get(ext.lower()) # 查表(不区分大小写)
if dest_folder: # 只在扩展名已知时处理
dest_path = os.path.join(root, dest_folder, filename)
os.makedirs(os.path.dirname(dest_path), exist_ok=True) # 确保目标文件夹存在
if not os.path.exists(dest_path): # 避免同名覆盖
shutil.move(os.path.join(root, filename), dest_path)
print("整理完毕!")
4.3 批量修改文本编码(常见坑:GBK vs UTF-8)
从网页下载或别的系统导出的文本文件,经常会因为编码不对导致乱码。下面的脚本把所有 .txt 文件转成 UTF-8:
import os, glob
for filepath in glob.glob("**/*.txt", recursive=True): # 查找所有 txt 文件
try:
with open(filepath, "r", encoding="gbk") as f: # 尝试用 GBK 读取(中文 Windows 常用)
content = f.read()
except UnicodeDecodeError:
with open(filepath, "r", encoding="utf-8") as f: # GBK 不行就试 UTF-8
content = f.read()
else:
with open(filepath, "w", encoding="utf-8") as f: # 统一保存为 UTF-8
f.write(content)
print(f"已转换:{filepath}")
编码小知识:UTF-8 是国际通用编码,几乎所有现代软件都用它。GBK 是中文版 Windows 的遗留编码。碰到乱码试试
encoding="gbk"换encoding="utf-8"或反过来。
五、requirements.txt 与 pip 换源
5.1 pip 是什么?
pip 是 Python 的包管理器——类似手机应用商店,专门用来安装别人写好的库(package)。比如你想用 Python 发 HTTP 请求,装一个 requests 库就行:
pip install requests # 从官方仓库 PyPI 下载安装 requests
5.2 为什么需要 requirements.txt?
当你花了一下午装好一堆库后,换个电脑又要重装一遍?requirements.txt 就是你的"库清单",一行一个包名:
# requirements.txt 示例
requests==2.31.0
flask==3.0.0
beautifulsoup4==4.12.2
一键全部装回:
pip install -r requirements.txt # 一次性安装清单上的所有库
5.3 pip 换源(提速神器)
默认情况下 pip 连接的是美国的 PyPI 官方服务器(pypi.org),在国内下载可能很慢。我们可以换成国内的镜像源:
# 临时换源(一次有效)
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
# 永久换源(配置一次,以后自动用清华镜像)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里镜像也可以
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
换源优先级:清华源通常最快,但如果清华崩了就切阿里云做后备。建议都配一下。
5.4 Python 搭配 LLM API 能做很多自动化
学会上面这些,你已经能写不少实用的自动化脚本了。如果你的目标更进阶——比如让 Python 自动总结文章、自动生成回复、批量处理数据——那就需要接入 AI 模型(LLM)。
目前主流的大模型大多支持 OpenAI 兼容格式,也就是说同一套代码可以通过改一行 base_url 切换不同的服务商。这就带来一个实际需求:很多国内用户直接调用海外 API 会被限速或阻断。
这时候可以考虑使用云间 API 中转站(cloudzone-api.cyou),它提供 OpenAI 兼容 + Anthropic 兼容的双协议支持,接入了 90+ 个模型,全部国内直连无需翻墙,价格起步价低至官方 0.05 折,还有香港节点可用。对于经常需要用 Python 调用 AI 的场景,用它来搭 base_url 很方便——一行配置切换过去,省去自己部署的成本。
当然,日常的文件处理、爬虫、数据整理并不需要 AI 能力。上述的安装、语法和批量处理知识足以覆盖 80% 的自动化需求。等你觉得还不够的时候,再接入 API 也不迟。
六、总结
| 主题 | 关键点 |
|---|---|
| 安装 | Windows 勾选 PATH;macOS 用 brew;Linux 用系统包管理器 |
| venv | 独立隔离环境,防"依赖地狱";激活后装的东西不影响系统 |
| 核心语法 | 变量/类型、if/elif/else、for/while、def 函数、列表/字典推导式 |
| 批量处理 | os.rename 重命名、shutil.move 归类、编码转换防乱码 |
| pip + 换源 | pip install xxx 装库;pip config set 换清华/阿里镜像提速 |
到这里你已经完成了从"没装过 Python"到"能写批量处理脚本"的全部步骤。下一步可以尝试把一个真实场景的需求写成脚本,比如自动备份某个文件夹、自动抓取网页标题等。遇到卡壳的地方,搜索 “Python + 你的问题”,99% 的情况都有人遇到过。如果你想用 Python 接入 AI 能力(比如让程序自动总结文章),可以试试 云间 API 中转站,支持 OpenAI / Anthropic 双协议,价格低至官方 0.05 折,国内直连无需翻墙,配置一行
base_url即可切换过去。
附:双版本一键脚本源码
以下脚本功能等价,分别适用于 Linux/macOS/WSL(.sh)和 Windows PowerShell(.ps1)。
- .sh 做了什么:检测网络环境 → 检测 Python3 → 提示安装缺失组件 → 创建 venv 虚拟环境 → pip 装 requests(清华镜像优先,失败回退阿里云)→ 生成一个批量重命名示例脚本并运行
- .ps1 做了什么:检测网络环境 → 检测 Python → 创建 venv → pip 换源(清华→阿里→官方回退链)→ 生成相同功能的批量重命名示例
两份脚本都公开源码、欢迎审查。不方便下载的同学可以直接复制下方代码,新建文本文档粘贴后改后缀为 .sh 或 .ps1 运行。也可从 install-python3-guide.sh 和 install-python3-guide.ps1 下载。
Linux / macOS / WSL 版本
#!/usr/bin/env bash
set -u
# ============================================================
# Python3 从零到脚本自动化 一键脚本(macOS / Linux / WSL)
# 公开源码,欢迎审查 —— 不放心可先复制给 AI 判断
# ============================================================
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
CYAN='\033[0;36m'
NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $1"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1"; }
step() { echo -e "${CYAN}[STEP]${NC} $1"; }
# --------------------------------------------------
# 1. 网络环境检测
# --------------------------------------------------
detect_network() {
step "检测网络环境(国内 / 国外)..."
if curl -fsI --max-time 5 "https://claude.ai" >/dev/null 2>&1; then
info "可直连 claude.ai,判定为海外网络"
echo "overseas"
else
warn "无法直连 claude.ai,判定为国内网络环境(将自动切换国内镜像源)"
echo "domestic"
fi
}
# --------------------------------------------------
# 2. 检测 Python3 是否已安装
# --------------------------------------------------
check_python3() {
step "检查 Python3 环境..."
local found=""
for p in python3 python; do
if command -v "$p" >/dev/null 2>&1; then
local ver
ver=$("$p" --version 2>&1)
if echo "$ver" | grep -qE "3\.[0-9]+"; then
found="$p"
info "检测到 $ver"
break
fi
fi
done
if [ -n "$found" ]; then
PY="$found"
return 0
fi
error "未找到 Python3!请先安装:\n"
echo " · Windows:去 https://www.python.org/downloads/ 下载,记得勾选 Add to PATH"
echo " · macOS: brew install python3"
echo " · Ubuntu/Debian:sudo apt install python3 python3-venv python3-pip -y"
echo " · CentOS/Fedora:sudo dnf install python3 -y"
echo ""
echo "安装好后请重新运行本脚本。"
return 1
}
# --------------------------------------------------
# 3. 创建虚拟环境
# --------------------------------------------------
setup_venv() {
step "创建虚拟环境..."
local venv_name=".venv"
if [ -d "$venv_name" ]; then
warn "虚拟环境 '$venv_name' 已存在,将复用"
else
if ! "$PY" -m venv "$venv_name"; then
error "创建虚拟环境失败(pip 模块可能缺失,试试:sudo apt install python3-venv)"
return 1
fi
info "虚拟环境创建成功:$venv_name/"
fi
# 获取虚拟环境内的 pip 路径
if [ -f "$venv_name/bin/pip" ]; then
PIP_CMD="$venv_name/bin/pip"
ACTIVATE="$venv_name/bin/activate"
elif [ -f "$venv_name/Scripts/pip" ]; then
PIP_CMD="$venv_name/Scripts/pip"
ACTIVATE="$venv_name/Scripts/activate"
else
error "找不到虚拟环境的 pip,目录结构异常"
return 1
fi
VENV_PIP="$PIP_CMD"
return 0
}
# --------------------------------------------------
# 4. pip 装库(带清华→阿里云→官方三重回退)
# --------------------------------------------------
install_package() {
local pkg="$1"
local net="$2"
step "安装 $pkg ..."
# 根据网络选择主镜像
local primary_url
if [ "$net" = "domestic" ]; then
primary_url="https://pypi.tuna.tsinghua.edu.cn/simple"
else
primary_url="https://pypi.org/simple"
fi
# 备选源
local backup_url="https://mirrors.aliyun.com/pypi/simple"
# 第一次尝试:主镜像
if $VENV_PIP install "$pkg" -i "$primary_url" --timeout 60 >/dev/null 2>&1; then
info "$pkg 安装成功(源:$primary_url)"
return 0
fi
warn "主源失败,回退到备用源:$backup_url"
if $VENV_PIP install "$pkg" -i "$backup_url" --timeout 60 >/dev/null 2>&1; then
info "$pkg 安装成功(源:$backup_url)"
return 0
fi
warn "镜像源均失败,重试官方源(可能较慢)..."
if $VENV_PIP install "$pkg" --timeout 120 >/dev/null 2>&1; then
info "$pkg 安装成功(官方源)"
return 0
fi
error "$pkg 安装失败。请手动检查:"
echo " 1. 网络连接是否正常"
echo " 2. 虚拟环境是否已正确激活"
echo " 3. 手动尝试:$VENV_PIP install $pkg"
return 1
}
# --------------------------------------------------
# 5. 生成批量重命名示例脚本
# --------------------------------------------------
generate_rename_script() {
step "生成批量重命名示例脚本..."
cat > rename_samples.sh << 'RENAME_EOF'
#!/usr/bin/env bash
# 批量重命名示例:给指定目录下的文件加日期前缀
# 用法:bash rename_samples.sh [目标目录]
# 默认处理当前目录下的 .txt 文件
TARGET_DIR="${1:-.}"
PREFIX=$(date +%Y%m%d)
echo "正在处理目录:$TARGET_DIR"
COUNT=0
for file in "$TARGET_DIR"/*.txt; do
[ -f "$file" ] || continue
BASENAME=$(basename "$file")
EXT="${BASENAME##*.}"
NAME="${BASENAME%.*}"
COUNT=$((COUNT + 1))
NEW_NAME="${PREFIX}_$(printf '%03d' $COUNT).${EXT}"
mv "$file" "$TARGET_DIR/$NEW_NAME"
echo " ${BASENAME} → ${NEW_NAME}"
done
echo "共重命名 $COUNT 个文件。"
RENAME_EOF
chmod +x rename_samples.sh
info "示例脚本已生成:rename_samples.sh"
echo " 使用方法:bash rename_samples.sh ./your-folder"
# 在当前目录下也创建一个测试用的 .txt 文件来演示效果
echo "test content 1" > samples_sample_1.txt
echo "test content 2" > samples_sample_2.txt
echo "test content 3" > samples_sample_3.txt
info "创建了 3 个测试文件用于演示"
# 运行重命名脚本
step "运行批量重命名演示..."
bash rename_samples.sh .
}
# --------------------------------------------------
# 主流程
# --------------------------------------------------
main() {
echo "============================================"
echo " Python3 从零到脚本自动化 一键脚本"
echo " 适用于 macOS / Linux / WSL"
echo "============================================"
echo ""
local NET
NET=$(detect_network)
check_python3 || exit 1
setup_venv || exit 1
install_package "requests" "$NET" || warn "requests 安装失败(可选,不影响后续演示)"
generate_rename_script
echo ""
echo "============================================"
info "全部完成!"
echo ""
echo "下一步指引:"
echo " 1. 激活虚拟环境:source .venv/bin/activate"
echo " 2. 查看重命名结果:ls *.txt 或 ls *${DATESTAMP:-2*}"
echo " 3. 卸载不需要的库:pip uninstall requests"
echo " 4. 导出依赖清单:pip freeze > requirements.txt"
echo "============================================"
}
main "$@"
Windows PowerShell 版本
# ============================================================
# Python3 从零到脚本自动化 一键脚本(Windows PowerShell)
# 公开源码,欢迎审查 -- 不放心可先复制给 AI 判断
# ============================================================
$ErrorActionPreference = "Stop"
function Write-Info { Write-Host "[INFO] $args" -ForegroundColor Green }
function Write-Warn { Write-Host "[WARN] $args" -ForegroundColor Yellow }
function Write-Err { Write-Host "[ERROR] $args" -ForegroundColor Red }
function Write-Step { Write-Host "[STEP] $args" -ForegroundColor Cyan }
# --------------------------------------------------
# 1. 网络环境检测
# --------------------------------------------------
function Detect-Network {
Write-Step "检测网络环境(国内 / 国外)..."
try {
$null = Invoke-WebRequest -Uri "https://github.com" -Method Head -TimeoutSec 5 -UseBasicParsing
Write-Info "可直连 github.com,判定为海外网络"
return "overseas"
} catch {
Write-Warn "无法直连 github.com,判定为国内网络环境(将自动切换国内镜像源)"
return "domestic"
}
}
# --------------------------------------------------
# 2. 检测 Python
# --------------------------------------------------
function Check-Python {
Write-Step "检查 Python 环境..."
$found = $null
foreach ($cmd in @("python", "py", "python3")) {
try {
$verStr = & $cmd --version 2>&1
if ($verStr -match "3\.(\d+)") {
$found = $cmd
Write-Info "检测到 $($verStr.Trim())"
break
}
} catch {
continue
}
}
if ($found) {
$script:PYTHON_CMD = $found
return $true
}
Write-Err "未找到 Python!请先安装:`n"
Write-Host " Windows:去 https://www.python.org/downloads/ 下载"
Write-Host " 重要:安装时务必勾选 'Add python.exe to PATH'"
Write-Host " 或使用 winget:winget install Python.Python.3`n"
return $false
}
# --------------------------------------------------
# 3. 创建虚拟环境
# --------------------------------------------------
function Setup-Venv {
Write-Step "创建虚拟环境..."
$venvName = ".venv"
if (Test-Path (Join-Path "." $venvName)) {
Write-Warn "虚拟环境 '$venvName' 已存在,将复用"
} else {
& $script:PYTHON_CMD -m venv $venvName
if ($LASTEXITCODE -ne 0) {
Write-Err "创建虚拟环境失败(请确保 Python 安装了 venv 模块)"
return $false
}
Write-Info "虚拟环境创建成功:$venvName/"
}
$script:VENV_PATH = Join-Path "." $venvName
$script:PIP_CMD = Join-Path $script:VENV_PATH "Scripts\pip.exe"
# 检查是否在 PowerShell 中运行——如果是,可能需要临时放宽执行策略
$shell = $Host.UI.RawUI.WindowTitle
if ($shell -match "PowerShell" -or $PSVersionTable.PSVersion.Major -ge 5) {
$currentPolicy = Get-ExecutionPolicy -Scope Process
if ($currentPolicy -eq "Restricted") {
Write-Warn "PowerShell 执行策略为 Restricted,临时设为 Bypass(仅当前会话有效,关闭窗口恢复)"
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
}
}
return $true
}
# --------------------------------------------------
# 4. pip 装库(清华→阿里云→官方三重回退)
# --------------------------------------------------
function Install-Package {
param([string]$Pkg, [string]$Network)
Write-Step "安装 $Pkg ..."
$primaryUrl = if ($Network -eq "domestic") {
"https://pypi.tuna.tsinghua.edu.cn/simple"
} else {
"https://pypi.org/simple"
}
$backupUrl = "https://mirrors.aliyun.com/pypi/simple"
# 第一次尝试:主镜像
try {
& $script:PIP_CMD install $Pkg -i $primaryUrl --timeout 60 | Out-Null
if ($LASTEXITCODE -eq 0) {
Write-Info "$Pkg 安装成功(源:$primaryUrl)"
return $true
}
} catch {
Write-Warn "主源失败:$_"
}
Write-Warn "回退到备用源:$backupUrl"
try {
& $script:PIP_CMD install $Pkg -i $backupUrl --timeout 60 | Out-Null
if ($LASTEXITCODE -eq 0) {
Write-Info "$Pkg 安装成功(源:$backupUrl)"
return $true
}
} catch {
Write-Warn "备用源失败:$_"
}
Write-Warn "重试官方源(可能较慢,请耐心等待)..."
try {
& $script:PIP_CMD install $Pkg --timeout 120 | Out-Null
if ($LASTEXITCODE -eq 0) {
Write-Info "$Pkg 安装成功(官方源)"
return $true
}
} catch {
Write-Err "$Pkg 安装失败。请手动检查网络和代理设置。"
return $false
}
}
# --------------------------------------------------
# 5. 生成批量重命名示例脚本
# --------------------------------------------------
function Generate-RenameScript {
Write-Step "生成批量重命名示例脚本..."
$renameScript = @'
@echo off
REM 批量重命名示例(Windows CMD):给指定目录下的文件加日期前缀
REM 用法:rename_samples.bat [目标目录]
setlocal enabledelayedexpansion
set TARGET_DIR=%~1
if "%TARGET_DIR%"=="" set TARGET_DIR=.
set PREFIX=%date:~0,4%%date:~5,2%%date:~8,2%
set COUNT=0
for %%F in ("%TARGET_DIR%\*.txt") do (
set /a COUNT+=1
set FILE=%%~nxF
set EXT=%%~xF
set NAME=%%~nF
set NEW_NAME=!PREFIX!_!COUNT!00!EXT!
ren "!FILE!" "!NEW_NAME!"
echo !FILE! -> !NEW_NAME!
)
echo 共重命名 %COUNT% 个文件。
@endlocal
'@
$renamePath = Join-Path "." "rename_samples.bat"
Set-Content -Path $renamePath -Value $renameScript -Encoding ASCII
Write-Info "批处理示例已生成:rename_samples.bat"
Write-Host " 使用方法:rename_samples.bat \`./your-folder"
# 创建测试文件
"test content 1" | Out-File -FilePath "samples_sample_1.txt" -Encoding ASCII
"test content 2" | Out-File -FilePath "samples_sample_2.txt" -Encoding ASCII
"test content 3" | Out-File -FilePath "samples_sample_3.txt" -Encoding ASCII
Write-Info "创建了 3 个测试文件用于演示"
# 用 PowerShell 做重命名演示
Write-Step "运行批量重命名演示..."
$today = Get-Date -Format "yyyyMMdd"
$count = 0
Get-ChildItem -Filter "*.txt" | Where-Object { $_.Name -like "samples_sample_*" } | ForEach-Object {
$count++
$ext = $_.Extension
$newName = "$today_{0:D3}$ext" -f $count
Rename-Item $_.FullName (Join-Path $_.Directory $newName)
Write-Host " $($_.Name) -> $newName"
}
Write-Info "共重命名 $count 个测试文件"
}
# --------------------------------------------------
# 主流程
# --------------------------------------------------
Write-Host "============================================" -ForegroundColor Cyan
Write-Host " Python3 从零到脚本自动化 一键脚本" -ForegroundColor Cyan
Write-Host " 适用于 Windows PowerShell" -ForegroundColor Cyan
Write-Host "============================================" -ForegroundColor Cyan
Write-Host ""
$network = Detect-Network
if (-not (Check-Python)) {
Write-Err "Python 未安装,脚本终止。请先安装后重跑。"
exit 1
}
if (-not (Setup-Venv)) {
Write-Err "虚拟环境创建失败,脚本终止。"
exit 1
}
Install-Package -Pkg "requests" -Network $network | Out-Null
Generate-RenameScript
Write-Host ""
Write-Host "============================================" -ForegroundColor Green
Write-Info "全部完成!"
Write-Host "============================================" -ForegroundColor Green
Write-Host ""
Write-Host "下一步指引:" -ForegroundColor White
Write-Host " 1. 激活虚拟环境:.venv\Scripts\Activate.ps1"
Write-Host " 2. 查看重命名结果:dir *.txt"
Write-Host " 3. 卸载不需要的库:.venv\Scripts\pip uninstall requests"
Write-Host " 4. 导出依赖清单:.venv\Scripts\pip freeze > requirements.txt"
Write-Host " 5. 如需长期启用脚本执行:Set-ExecutionPolicy -Scope CurrentUser RemoteSigned"
Write-Host " (RemoteSigned 允许运行本地编写的脚本;恢复用 Unrestricted 或 Restricted)"
公开声明:以上所有脚本均为开源代码,没有任何隐藏逻辑或不信任操作。你可以把代码全文复制给任何 AI 工具审查,或逐行阅读确认。遇到任何问题欢迎反馈。
请完成验证后查看评论区