如果pywinauto抛出异常,则无法写入文件

2024-04-19 18:50:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,所以不能确定问题出在哪里:在PyWinAuto中还是在我对Python的知识中。在

我运行下一个脚本Windows(python3.5.2):

#!/usr/bin/env python3
import os
import sys
import pywinauto

def testLicenseForm():
    app = pywinauto.Application().Start('Calc.exe')

    try:
        LicenseForm = app['Nonsense name']
        LicenseForm.OK.Click()
 #       raise pywinauto.findbestmatch.MatchError
 #       raise pywinauto.timings.TimeoutError
    except (pywinauto.timings.TimeoutError, pywinauto.findbestmatch.MatchError) as e:
        f = open('R:\Temp\diagnostic\log.errors', 'w')
        f.write('Exception raised')
        sys.exit('Error in script'.format(__file__))

if __name__ == '__main__':
    testLicenseForm()

问题是日志.错误已创建,但为空。如果我像这样更改代码:

^{pr2}$

在日志.错误文件已创建,其中包含预期的文本。 不知道问题出在哪里。如果pywinauto抛出异常,如何更改脚本以将一些信息写入文件。在


Tags: 文件nameimport脚本app错误sysraise
1条回答
网友
1楼 · 发布于 2024-04-19 18:50:10

在关闭文件(f.close())或执行f.flush()之前,f.write不保证写入数据。但我建议你用以下方式:

with open('R:\Temp\diagnostic\log.errors', 'w') as f:
    f.write('Exception raised')

此上下文管理器将在退出with节时自动关闭文件。即使在with内引发异常,文件也保证关闭。在

相关问题 更多 >