微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python,脚本在从 CMD 运行时停在某一行

如何解决Python,脚本在从 CMD 运行时停在某一行

我一直在编写一个脚本,每 10 秒单击一次鼠标,并在单击热键“-”后停止执行此操作,然后在我再次单击热键时再次启动。 当我使用 python IDLE 运行它时,它的工作原理和描述一样,但是当我从 CMD 运行时,它只是在声明行之后停止脚本: os.system('cmd /k "msg * /v Stopped!"') 对我来说这似乎很奇怪,因为有更多的行要执行过去.. 感谢您的帮助

代码如下:

import pyautogui,keyboard,time,os,winsound
from datetime import datetime

temp = True
work = True
while True:
    while int(datetime.Now().strftime("%s")) % 10 != 0:
        temp = True
        if keyboard.is_pressed("-"):
            if work == True:
                os.system('cmd /k "msg * /v Stopped!"')
                work = False
                time.sleep(2)
                winsound.PlaySound("SystemExit",winsound.SND_ALIAS)
            else:
                work = True
                os.system('cmd /k "msg * /v Started!"')
                time.sleep(2)
                winsound.PlaySound("SystemExit",winsound.SND_ALIAS)
    if temp == True and work == True:
        pyautogui.click()
        temp = False

解决方法

os.system(command)

在子shell中执行命令(一个字符串)。
...
在Windows上, 返回值是系统shell运行后返回的值 command。 shell 由 Windows 环境变量给出 COMSPEC:通常是cmd.exe,返回退出状态 命令运行...

换句话说,os.system 等待返回值。

另一方面(请参阅内置帮助 cmd /? 或阅读 cmd.exe docs):

  • cmd /C string 执行string指定的命令,然后终止
  • cmd /K string 执行string指定的命令,但保留

使用任一

  • os.system('"msg * /v Stopped!"'),甚至
  • os.system('msg * /v Stopped!')

因为 cmd /c 在 Windows 中对于 os.system 是隐式的...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。