import pandas as pd
import re
import os
# ---------- 輸入輸出路徑 ----------
csv_path = r"C:\Users\18102\Downloads\jietu\百度網盤分享.csv"
output_excel = r"C:\Users\18102\Downloads\jietu\百度網盤分享完整.xlsx"
# ---------- 您新提供的三條分享記錄 ----------
new_records = []
# ---------- 讀取現有 CSV(如果存在) ----------
if os.path.exists(csv_path):
try:
df_existing = pd.read_csv(csv_path, encoding='utf-8')
except UnicodeDecodeError:
df_existing = pd.read_csv(csv_path, encoding='gbk')
except Exception as e:
print(f"讀取CSV失敗:{e}")
exit()
# 確保列名正確(若列數正好是4則重命名)
expected_cols = ['文件名', '鏈接', '提取碼', '分享狀態']
if list(df_existing.columns) != expected_cols:
if len(df_existing.columns) == 4:
df_existing.columns = expected_cols
else:
print("現有CSV列名不匹配,請檢查。")
print("當前列名:", df_existing.columns.tolist())
exit()
else:
print("CSV文件不存在,將只使用新添加的三條記錄。")
df_existing = pd.DataFrame(columns=['文件名', '鏈接', '提取碼', '分享狀態'])
# ---------- 添加新記錄並去重(防止重複) ----------
df_new = pd.DataFrame(new_records)
df_combined = pd.concat([df_existing, df_new], ignore_index=True)
df_combined.drop_duplicates(subset=['文件名'], keep='first', inplace=True)
# ---------- 提取站點 ID ----------
def extract_id(filename):
if not isinstance(filename, str):
return None
match = re.match(r'^(\d+)', filename)
return int(match.group(1)) if match else None
df_combined['站點id'] = df_combined['文件名'].apply(extract_id)
# 過濾掉未提取到ID的行(正常情況下不會)
df_valid = df_combined[df_combined['站點id'].notna()].copy()
# ---------- 選擇最終列,並按ID排序 ----------
df_result = df_valid[['站點id', '文件名', '鏈接', '提取碼']].copy()
df_result.sort_values('站點id', ascending=True, inplace=True)
# ---------- 輸出到 Excel ----------
df_result.to_excel(output_excel, index=False, engine='openpyxl')
print(f"✅ 完整Excel已生成,共 {len(df_result)} 條分享記錄。")
print(f"📁 輸出路徑:{output_excel}")