早上九点半打卡,泡上茶,打开电脑,一天的工作从整理表格开始。我盯着屏幕上几百行数据,手动复制粘贴,眼睛快瞎了。旁边老张问我中午吃啥,我说先把活干完。他说他十分钟就搞定,我还不信。
后来我才知道,他用Python写了个脚本。每天花十分钟处理这些重复操作,剩下时间喝茶看行情。我当场让他教我,学完才知道自己以前多傻。今天把这些脚本整理出来,你直接抄作业就行。
一、自动整理Excel报表
每周五下午要交周报,要把五个部门的表格合并成一个总表。以前我得挨个打开,复制,粘贴,调格式,折腾四十分钟。现在这个脚本帮我做完,从打开文件到输出结果,全程不到十秒。
把下面代码保存成 merge_excel.py,放在放表格的文件夹里,双击运行就行。
import pandas as pd import glob
files = glob.glob('报表_.xlsx')
dfs = [pd.read_excel(f) for f in files]
result = pd.concat(dfs, ignore_index=True)
result.to_excel('合并周报.xlsx', index=False)
print('搞定了,打开合并周报.xlsx看看')
这代码就干一件事,把当前文件夹里所有以“报表_”开头的Excel读进来,拼在一起,输出新文件。名字自己改,路径也自己调。关键是不用管列名是否一致,它自动按表头对齐。
二、批量改文件名
每个月要归档合同扫描件,文件名都是“扫描件_20240301_001.pdf”这种乱码。领导要求改成“客户名_项目名_日期.pdf”。手动改三十个文件,脑子疼。后来用下面的脚本,把旧名和新名的对应关系写在csv里,运行一次全改完。
import os import csv
with open('改名对照.csv', newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for old, new in reader:
if os.path.exists(old):
os.rename(old, new)
print(f'{old} -> {new}')
else:
print(f'没找到 {old}')
csv里两列,第一列旧文件名,第二列新文件名,不带路径就默认当前文件夹。注意文件名别带特殊符号,Windows下容易出岔子。
三、自动发群消息
每天早上要给三个工作群发同样的通知,以前一个个复制粘贴,还总担心发错群。现在用Python模拟鼠标键盘操作,到点自动打开微信,输入文字,回车发送。代码不多,但得装个pyautogui库。
import pyautogui import time
pyautogui.PAUSE = 1
time.sleep(3)
pyautogui.hotkey('ctrl', 'f')
pyautogui.write('工作群一')
time.sleep(1)
pyautogui.press('enter')
time.sleep(1)
pyautogui.write('各位,今天下午3点开会,带好笔记本')
pyautogui.press('enter')
运行之前,微信要开着,电脑别锁屏。第一次用先试运行,把鼠标移动到目标位置看看坐标对不对。这个脚本不完美,偶尔会点错位置,但不影响大局。
四、自动备份文件夹
做设计的同事天天要备份源文件,手动复制粘贴容易漏。我用Python写了个同步脚本,把指定文件夹里的新文件自动复制到移动硬盘里。用到了shutil库,自带的,不用装。
import shutil import os
from datetime import datetime
src = r'D:\设计稿'
dst = r'E:\备份\设计稿'
for root, dirs, files in os.walk(src):
for file in files:
src_path = os.path.join(root, file)
rel_path = os.path.relpath(src_path, src)
dst_path = os.path.join(dst, rel_path)
os.makedirs(os.path.dirname(dst_path), exist_ok=True)
shutil.copy2(src_path, dst_path)
print(datetime.now(), '备份完成')
它遍历源文件夹所有子目录和文件,碰到新的就复制过去。已经存在的文件会直接覆盖,所以别把重要文件随便放源目录里。跑一次大概几秒钟。
五、定时提醒喝水
别笑,这个真有用。坐电脑前干活一坐就是三小时,脖子僵硬。我写了个脚本,每隔四十五分钟弹个提醒框,上面写着“起来动动,顺便喝口水”。用的是tkinter,Python自带的窗口库。
import tkinter as tk import time
def remind():
root = tk.Tk()
root.title('提醒')
label = tk.Label(root, text='起来动动,喝口水', font=('微软雅黑', 24))
label.pack(padx=50, pady=30)
root.after(5000, root.destroy)
root.mainloop()
while True:
time.sleep(2700)
remind()
这个脚本一开就得一直跑着,别关。嫌烦可以把时间改长点,比如改成5400秒,就是90分钟提醒一次。
六、自动整理下载文件夹
下载文件夹里乱七八糟,图片、PDF、压缩包混在一起。我每天下班前运行一次这个脚本,按扩展名分类移动到对应子文件夹。省得周末找文件翻半天。
import os import shutil
downloads = r'C:\Users\你的用户名\Downloads'
ext_map = {
'.jpg': '图片', '.png': '图片',
'.pdf': 'PDF', '.docx': '文档',
'.zip': '压缩包', '.exe': '软件'
}
for f in os.listdir(downloads):
ext = os.path.splitext(f)[1].lower()
if ext in ext_map:
folder = os.path.join(downloads, ext_map[ext])
os.makedirs(folder, exist_ok=True)
shutil.move(os.path.join(downloads, f), folder)
print('整理完毕')
路径里的“你的用户名”换成自己的,不知道的话打开文件资源管理器看地址栏。这脚本只管移动,不会删任何东西。不放心就先手动建好那几个子文件夹,运行脚本一样有效。
每天摸鱼两小时真不是开玩笑,光那个合并报表就省了我四十分钟。批量改文件名省二十分钟,群消息省十分钟,这些时间凑一起,午休能多睡半小时,下午精神好多了。
写这些脚本不用学很深,会复制粘贴改改路径就能跑。真遇到报错,就把错误信息复制到搜索引擎里,基本都能找到答案。别怕弄坏东西,文件都有备份,最坏就是重来一遍。
你手上肯定也有那种重复到吐的工作,花半小时写个脚本换每天两小时自由,这买卖太划算了。