如何用Python脚本在Windows中调用应用的「另存为」功能转换文件格式?
实现Windows应用「另存为」的Python自动化方案
针对你提到的两种场景,分别给出具体实现方法,均基于Windows平台的文件处理或UI自动化:
一、记事本转CSV
高效方案:直接文件转换(无需打开记事本)
如果只是纯文本转CSV,没必要启动记事本,直接读写文件更简单:
# 读取原txt文件 with open("input.txt", "r", encoding="utf-8") as txt_file: content = txt_file.read() # 转换为CSV(这里假设txt用制表符分隔,替换为逗号;如果是其他格式自行调整) with open("output.csv", "w", encoding="utf-8", newline="") as csv_file: csv_file.write(content.replace("\t", ","))
严格按需求:打开记事本并模拟「另存为」
如果必须通过记事本操作,用pywinauto模拟UI步骤:
- 先装依赖:
pip install pywinauto - 代码示例:
from pywinauto import Application import time # 启动记事本并打开目标文件 app = Application().start("notepad.exe input.txt") time.sleep(1) # 等待窗口加载完成 # 获取记事本主窗口 main_win = app.window(title_re=".* - 记事本") # 模拟快捷键打开「另存为」:Alt+F 打开文件菜单,再按A选择另存为 main_win.type_keys("%FA") time.sleep(0.5) # 操作另存为对话框 save_dialog = app.window(title="另存为") save_dialog.Edit.set_text("output.csv") # 设置保存文件名 save_dialog["保存(&S)"].click() # 处理文件已存在的覆盖提示 try: overwrite_dialog = app.window(title="确认另存为") overwrite_dialog["是(&Y)"].click() except: pass # 没有提示就跳过 # 关闭记事本 main_win.close()
二、PowerBI转PBIT/PBIP
PowerBI没有命令行直接导出的参数,只能用UI自动化实现,同样用pywinauto:
- 装依赖:
pip install pywinauto - 代码示例:
from pywinauto import Application import time # 启动PowerBI并打开目标PBIX文件 pbix_file = "example.pbix" # 注意PowerBI的安装路径,默认是下面这个,如果你改了路径自行调整 app = Application().start(f'"C:\\Program Files\\Microsoft Power BI Desktop\\bin\\PBIDesktop.exe" "{pbix_file}"') time.sleep(10) # PowerBI加载慢,根据自己电脑性能调整等待时间 # 获取主窗口 main_win = app.window(title_re=".* - Power BI Desktop") # 另存为PBIT:快捷键Alt+F(文件菜单)→A(另存为)→T(PBIT格式) main_win.type_keys("%FAT") time.sleep(1) # 设置保存文件名 save_dialog = app.window(title="另存为") save_dialog.Edit.set_text("example.pbit") save_dialog["保存(&S)"].click() # 如果要转PBIP,把上面的快捷键改成 "%FAP" 即可 # main_win.type_keys("%FAP") # 处理覆盖提示 try: overwrite_dialog = app.window(title="确认另存为") overwrite_dialog["是(&Y)"].click() except: pass # 关闭PowerBI main_win.close()
关键注意事项
- 等待时间:
time.sleep()的时长要适配自己的电脑,避免操作太快导致控件找不到。 - 窗口标题:用
title_re正则匹配窗口标题,避免因为文件名不同导致定位失败。 - 快捷键适配:以上是中文Windows界面的快捷键,英文界面需要调整(比如英文PowerBI的另存为是Alt+F→S,再选格式)。
- 干扰项:确保PowerBI启动时没有登录弹窗、更新提示等,否则会打断自动化流程。
内容的提问来源于stack exchange,提问作者RBB
相关产品推荐
相关产品推荐

