ZJUEVA-Reimburse-Downloader/main.py

60 lines
3.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from pandas import read_excel
from requests import get
from sys import exit
import os
import numpy as np
def download(url, pic_path_name):
format_file = url.split(".")[-1].lower()
if format_file not in ["png", "pdf", "jpg", "jpeg"]:
input("文件格式出现错误,请联系程序开发者!")
exit()
result = get(url)
file = pic_path_name + "." + format_file
with open(file, "wb") as f:
f.write(result.content)
if __name__ == "__main__":
skip_str = ["(空)", "(跳过)", "" ,float('nan')] #遇到这几种字符串的时候跳过
dir_path = input("请输入 .xls / .xlsx 文件所在文件夹的绝对或相对路径:")
for root, _, files in os.walk(dir_path):
for file in files:
print(file.lower())
if file.lower().endswith('.xls') or file.lower().endswith('.xlsx'):
excel_path = os.path.join(root, file)
df = read_excel(excel_path)
print("正在处理 " + file + " ...")
dir_name = file.split('.')[0]
os.mkdir(dir_name)
for one in range(len(df)):
path_name = './' + dir_name + '/' + str(df["2、购买日期 格式:年+月+日 如 2025.10.19"][one]) + "" + str(df["4、金额"][one]) + "" + df["3、购买物品"][one] + " " + df["1、你的姓名"][one]
if not os.path.exists(path_name):
os.mkdir(path_name)
# 处理购买记录截图
buy_prt_sc = df["7、订单截图如淘宝订单截图"][one]
if buy_prt_sc not in skip_str and isinstance(buy_prt_sc, str):
download(buy_prt_sc, "./" + path_name + "/订单截图")
else:
print(f"{one + 1}个购买记录截图被跳过")
# 处理支付记录截图
pay_prt_sc = df["6、支付记录(如微信支付/支付宝支付记录截图)"][one]
if pay_prt_sc not in skip_str and isinstance(pay_prt_sc, str):
download(pay_prt_sc, "./" + path_name + "/支付记录截图")
else:
print(f"{one + 1}个支付截图记录被跳过")
# 处理发票
invoice = df["8、发票注意一定要上传pdf格式"][one]
if invoice not in skip_str and isinstance(invoice, str):
download(invoice, "./" + path_name + "/发票")
else:
print(f"{one + 1}个发票被跳过")
# 处理行程单
itinerary = df["9、电子行程单pdf"][one]
if itinerary not in skip_str and isinstance(itinerary, str):
download(itinerary, "./" + path_name + "/行程单")
else:
print(f"{one + 1}个行程单被跳过")
print(f"共计{len(df)}, 已完成{one + 1}")
print(file + " 处理完毕!")