如果 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
.
中引发异常,文件也保证关闭
我是 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
.