本文目录导读:

可以的,实用脚本完全可以实现批量交换功能,具体取决于你想要交换的对象和交换方式,下面为你整理几种常见场景及对应的脚本方案。
批量交换文件名(最常用)
场景:批量交换两个文件的名字
# rename_swap.py
import os
import glob
def batch_swap_names(pattern1, pattern2):
"""
将两类文件两两交换名称
a1.txt <-> b1.txt, a2.txt <-> b2.txt
"""
files1 = sorted(glob.glob(pattern1))
files2 = sorted(glob.glob(pattern2))
if len(files1) != len(files2):
print("文件数量不匹配!")
return
# 先用临时名过渡
temp_names = []
for f1, f2 in zip(files1, files2):
temp = f"temp_{os.path.basename(f1)}"
os.rename(f1, temp)
temp_names.append((temp, f2, f1))
for temp, f2, original in temp_names:
os.rename(f2, original)
os.rename(temp, f2)
print(f"成功交换 {len(files1)} 对文件")
# 使用示例
batch_swap_names("photo_*.jpg", "pic_*.jpg")
批量交换Excel/CSV列数据
场景:将两列的所有数据互换
# swap_columns.py
import pandas as pd
def swap_columns_in_file(input_file, col_a, col_b, output_file=None):
"""
交换Excel或CSV中两列的数据
"""
if input_file.endswith('.csv'):
df = pd.read_csv(input_file)
else:
df = pd.read_excel(input_file)
# 交换两列数据
df[col_a], df[col_b] = df[col_b].copy(), df[col_a].copy()
output_file = output_file or f"swapped_{input_file}"
if output_file.endswith('.csv'):
df.to_csv(output_file, index=False)
else:
df.to_excel(output_file, index=False)
print(f"已交换 {col_a} 和 {col_b} 列, 保存至 {output_file}")
# 使用示例
swap_columns_in_file("data.xlsx", "姓名", "年龄")
批量交换两个文件夹的内容
场景:交换两个目录下所有对应文件
# swap_dirs.py
import shutil
import os
from pathlib import Path
def swap_directories(dir_a, dir_b, backup=True):
"""
交换两个目录的全部内容
注意:需要先在其他地方创建临时目录
"""
dir_a, dir_b = Path(dir_a), Path(dir_b)
if not dir_a.exists() or not dir_b.exists():
print("目录不存在")
return
temp_dir = Path(f"temp_swap_{os.urandom(4).hex()}")
try:
# 移动 A→临时, B→A, 临时→B
shutil.move(str(dir_a), str(temp_dir))
shutil.move(str(dir_b), str(dir_a))
shutil.move(str(temp_dir), str(dir_b))
print(f"成功交换 {dir_a} 和 {dir_b}")
except Exception as e:
print(f"出错: {e}")
# 出错时自动恢复
if temp_dir.exists():
shutil.rmtree(str(temp_dir))
# 使用示例
swap_directories("folder_A", "folder_B")
批量交换数据库字段值
场景:MySQL/SQLite中交换两列
# swap_db_columns.py
import sqlite3
def swap_values_in_db(db_path, table, col_a, col_b):
"""
交换数据库表中两列的所有值
使用临时列作为中介
"""
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
try:
# 添加临时列
cursor.execute(f"ALTER TABLE {table} ADD COLUMN _temp TEXT")
# 交换数据
cursor.execute(f"UPDATE {table} SET _temp = {col_a}")
cursor.execute(f"UPDATE {table} SET {col_a} = {col_b}")
cursor.execute(f"UPDATE {table} SET {col_b} = _temp")
# 删除临时列
cursor.execute(f"ALTER TABLE {table} DROP COLUMN _temp")
conn.commit()
print(f"成功交换 {table} 表的 {col_a} 和 {col_b} 列")
except Exception as e:
conn.rollback()
print(f"失败: {e}")
finally:
conn.close()
# 使用示例
swap_values_in_db("mydb.db", "users", "first_name", "last_name")
批量交换图片文件格式
场景:批量将PNG和JPG互转并交换
# swap_image_formats.py
from PIL import Image
import glob
import os
def batch_swap_image_formats(pattern_a, pattern_b):
"""
将两类图片互相转换格式并交换文件名
*.png → .jpg, *.jpg → .png
"""
files_a = glob.glob(pattern_a) # 如 "*.png"
files_b = glob.glob(pattern_b) # 如 "*.jpg"
# 先转换A→B格式
for f in files_a:
img = Image.open(f)
new_name = f.rsplit('.', 1)[0] + '.jpg'
img.save(new_name)
# 再转换B→A格式
for f in files_b:
img = Image.open(f)
new_name = f.rsplit('.', 1)[0] + '.png'
img.save(new_name)
# 最后删除原文件并重命名
for f in files_a:
os.remove(f)
for f in files_b:
os.remove(f)
# 使用示例
batch_swap_image_formats("*.png", "*.jpg")
关键注意事项
- 备份:批量操作前一定要备份数据
- 事务安全:使用临时过渡文件/列避免数据丢失
- 幂等性:设计成可重复执行不产生副作用
- 匹配规则:确保文件或数据能正确配对
适合批量交换的实用工具
如果不想写脚本,也可以考虑:
- Excel:使用 Power Query 批量处理列交换
- Total Commander:插件支持批量文件重命名交换
- Notepad++:列编辑模式 + 宏录制批量交换
- SQL:一条
UPDATE语句配合临时列
需要我针对你的具体场景(文件?数据库?配置?),给出更精确的脚本吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播