You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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步骤:

  1. 先装依赖:pip install pywinauto
  2. 代码示例:
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:

  1. 装依赖:pip install pywinauto
  2. 代码示例:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 21:17:14