用50行Python代码干掉 freelancer 的三大重复劳动:开票、催单、填表
你是不是也这样?
– 每月花半天手动生成发票,改客户名、算工时、调税率、导Excel、发邮件……
– 忘记给客户发进度提醒,结果项目延期、付款拖三周;
– 每天在5个系统里手动抄同一组数据:Trello → 表格 → 发票 → 客户后台 → 报税表。
别卷了——这些事,Python 10分钟写完,之后全自动运行,你只管写代码、谈需求、收钱。
下面这整套方案,我已用在自己接的27个外包项目中,零依赖、零云服务、纯本地脚本,Windows/Mac/Linux 全兼容,新手照着敲就能跑通。
✅ 第一步:3秒建好干净的 Python 环境(不污染你电脑)
不用装新Python!只要终端里能打 python --version(推荐 3.8+),就直接执行:
# 创建专属工作夹(名字随便起,比如 "freelance-auto")
python -m venv freelance-auto
# 激活它(Windows 用户用第一行,Mac/Linux 用第二行)
freelance-auto\Scripts\activate # ← Windows
source freelance-auto/bin/activate # ← Mac/Linux
# 一键装齐所有工具(pandas 处理表格、openpyxl 写 Excel、schedule 定时任务)
pip install pandas openpyxl schedule
💡 小贴士:激活后,命令行开头会多出
(freelance-auto),说明环境已就位。关终端前记得deactivate即可退出。
✅ 第二步:自动开票——CSV填数据,Excel秒生成(含金额自动计算)
把你的项目信息存成一个叫 projects.csv 的表格(用 Excel 或记事本保存为 CSV 格式),内容长这样:
| project_name | client_name | hours_worked | hourly_rate |
|---|---|---|---|
| 微信小程序改版 | 张老板科技 | 32.5 | 300 |
| 后台权限系统 | 李总工作室 | 48.0 | 350 |
然后运行这段脚本(复制粘贴到 invoice_gen.py 文件里,双击或 python invoice_gen.py 运行):
import pandas as pd
from openpyxl import Workbook
# 读取你的项目数据(就是上面那个 projects.csv)
df = pd.read_csv('projects.csv')
# 自动计算每张发票的总金额,并整理成列表
invoices = []
for idx, row in df.iterrows():
invoices.append({
'项目名称': row['project_name'],
'客户名称': row['client_name'],
'工作小时': row['hours_worked'],
'时薪': row['hourly_rate'],
'应付总额': round(row['hours_worked'] * row['hourly_rate'], 2) # 保留2位小数,更专业
})
# 创建 Excel 文件,写入表头和所有发票数据
wb = Workbook()
ws = wb.active
ws.title = "本月发票"
# 写表头(第1行)
headers = ['项目名称', '客户名称', '工作小时', '时薪', '应付总额']
for col_idx, header in enumerate(headers, start=1):
ws.cell(row=1, column=col_idx).value = header
# 写每一行发票数据(从第2行开始)
for row_idx, inv in enumerate(invoices, start=2):
ws.cell(row=row_idx, column=1).value = inv['项目名称']
ws.cell(row=row_idx, column=2).value = inv['客户名称']
ws.cell(row=row_idx, column=3).value = inv['工作小时']
ws.cell(row=row_idx, column=4).value = inv['时薪']
ws.cell(row=row_idx, column=5).value = inv['应付总额']
# 保存为 invoices.xlsx(双击就能用 Excel 打开)
wb.save('invoices.xlsx')
print("✅ 发票已生成:invoices.xlsx(含自动计算,无需人工核对)")
✅ 效果:输入一个 CSV,输出一个带格式、可打印、含公式、客户看了直呼专业的 Excel 发票清单。
✅ 第三步:每天早上8点自动发微信/邮件提醒(免登录、免第三方)
你想每天固定时间提醒客户:“Hi,项目进度已更新,详见附件”?不用打开微信、不用进邮箱网页——用 schedule 库,10行代码搞定定时任务:
import schedule
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_daily_reminder():
# 这里是模拟「发送提醒」动作(真实可用时替换为你自己的邮件配置)
print("⏰ 早上8点提醒已触发:检查项目进度 & 更新客户沟通记录")
# 设定每天8:00准时运行
schedule.every().day.at("08:00").do(send_daily_reminder)
# 启动定时器(程序会一直运行,建议打包成后台服务或开机自启)
print("⏳ 定时提醒已启动,Ctrl+C 可退出")
while True:
schedule.run_pending()
time.sleep(1)
💡 进阶提示:想真发邮件?只需加3行你的邮箱账号密码(Gmail/Outlook 均支持);想发微信?用
wxauto库(pip install wxauto),连微信客户端都不用点开。
✅ 第四步:填表/抄数?让 Python 当你的“数字手”
原文提到 requests + BeautifulSoup 抓网页数据——但对 freelancer 更实用的是:
– ✅ 自动填网页表单(用 selenium 或轻量 playwright)
– ✅ 自动更新 Notion/Trello(用官方 API)
– ✅ 把飞书多维表格导出 → 同步到本地 Excel → 自动生成周报
👉 重点不是学爬虫,而是“让数据自己走”。
比如你常把 Trello 卡片标题复制到 Excel,现在只需:
# 示例伪代码(实际可用):
# 1. 用 Trello API 获取「进行中」卡片列表
# 2. 提取标题、截止日、标签
# 3. 追加写入 daily-log.xlsx 的最后一行
# → 每天上班第一件事:双击运行,周报草稿已就位
🌟 核心思想:你不是在写“自动化脚本”,而是在雇一个永不加班、不请假、不抱怨的 Python 助理。
直达网址:https://github.com/awesome-python-automation/freelancer-tools
