我有一个带有脚本的函数,可以读取一些数据并在 SAP-GUI 中执行一些操作。也许,GUI 中会弹出一个消息窗口,我想捕获该窗口以继续执行脚本。为此,我必须在脚本的每一行之后检查条件(如果出现弹出窗口)。
我有:
def mysap_script():
command1
command2
command3
我必须做但想避免的事情:
def mysap_script():
command1
if message_window opens: do some actions
command2
if message_window opens: do the same action as before
command3
if message_window opens: do the same action as before
有没有一种高效且简单的方法来解决这个问题?
您可以使用检查您需要检查的条件的函数来包装命令。
def wrapped_cmd(cmd):
if cond:
something()
cmd()
然后这样称呼它,就像这样
def mysap_script():
wrapped_cmd(cmd)
看来您的代码可以从 asyncio 中受益。通过使用下面的代码,您将(几乎)同时运行这两个函数。看起来也更干净。
import asyncio
async def mysap_script():
command1
await asyncio.sleep(0)
command2
await asyncio.sleep(0)
command3
async def check_window():
if message_window opens: do some actions
await asyncio.sleep(0)
async def main():
await asyncio.gather(count(), check_window())
if __name__ == "__main__":
import time
s = time.perf_counter()
asyncio.run(main())
elapsed = time.perf_counter() - s
print(f"{__file__} executed in {elapsed:0.2f} seconds.")