如果 pywinauto 抛出异常,则写入文件不起作用

Writing to a file doesn't work if pywinauto throw an exception

我是 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()

问题是 log.errors 已创建,但为空。如果我这样更改代码:

#    LicenseForm.OK.Click()
     raise pywinauto.findbestmatch.MatchError

log.errors 文件已创建并包含预期的文本。 不确定问题出在哪里。如果 pywinauto 抛出异常,如何更改脚本以将一些信息写入文件。

在您关闭文件 (f.close()) 或执行 f.flush() 之前,

f.write 不能保证写入数据。但我建议您采用以下方式:

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

此上下文管理器将在退出 with 部分时自动关闭文件。即使在 with.

中引发异常,文件也保证关闭