文字脚本自动生成

This commit is contained in:
JA
2026-06-08 10:49:52 +08:00
commit c0dfa441a5
10 changed files with 1704 additions and 0 deletions

View File

@@ -0,0 +1,104 @@
"""
xlsx转csv工具
- 将指定目录下所有.xlsx文件转换为.csv格式
- 输出路径D:\15CVS
- 只处理每个xlsx文件的第一个工作表主数据表
- 忽略以~$开头的临时文件
- CSV编码UTF-8 with BOM
- 避免覆盖同名文件(如已存在则跳过并提示)
"""
import os
import sys
import csv
import glob
from openpyxl import load_workbook
def xlsx_to_csv(src_dir, out_dir):
"""将源目录下所有xlsx文件转换为csv格式"""
# 确保输出目录存在
os.makedirs(out_dir, exist_ok=True)
# 统计计数
success_count = 0
skip_count = 0
fail_count = 0
# 遍历源目录下所有xlsx文件不递归子目录
xlsx_files = glob.glob(os.path.join(src_dir, "*.xlsx"))
for xlsx_path in xlsx_files:
filename = os.path.basename(xlsx_path)
# 跳过以~$开头的临时文件
if filename.startswith("~$"):
print(f"[跳过] 临时文件: {filename}")
skip_count += 1
continue
csv_filename = os.path.splitext(filename)[0] + ".csv"
csv_path = os.path.join(out_dir, csv_filename)
# 检查目标文件是否已存在
if os.path.exists(csv_path):
print(f"[跳过] 文件已存在: {csv_filename}")
skip_count += 1
continue
try:
print(f"[转换] {filename} -> {csv_filename}", end=" ... ")
# 读取xlsx文件只读模式提高性能
wb = load_workbook(xlsx_path, read_only=True, data_only=True)
ws = wb.active # 获取第一个工作表
# 写入CSV文件
with open(csv_path, "w", newline="", encoding="utf-8-sig") as f:
writer = csv.writer(f)
for row in ws.iter_rows(values_only=True):
# 将None转为空字符串其他值保持原样
csv_row = [cell if cell is not None else "" for cell in row]
writer.writerow(csv_row)
wb.close()
print("成功")
success_count += 1
except Exception as e:
print(f"失败")
print(f" [错误] {filename}: {e}")
fail_count += 1
# 清理可能生成的不完整文件
if os.path.exists(csv_path):
try:
os.remove(csv_path)
except Exception:
pass
# 打印统计结果
print("\n" + "=" * 50)
print(f"转换完成!")
print(f" 成功: {success_count}")
print(f" 跳过: {skip_count}")
print(f" 失败: {fail_count}")
print(f" 总计: {success_count + skip_count + fail_count}")
print("=" * 50)
if __name__ == "__main__":
src_dir = r"d:\A工作\P-L15_config"
out_dir = r"D:\15CVS"
# 支持命令行参数修改源目录
if len(sys.argv) > 1:
src_dir = sys.argv[1]
if len(sys.argv) > 2:
out_dir = sys.argv[2]
print(f"源目录: {src_dir}")
print(f"输出目录: {out_dir}")
print("-" * 50)
xlsx_to_csv(src_dir, out_dir)