Python. 如何执行一个系统命令(Windows)而避免使用控制台?

12 浏览
0 Comments

Python. 如何执行一个系统命令(Windows)而避免使用控制台?

我现在正在使用pythonw.exe运行我的脚本,当执行以下命令时,cmd窗口会出现:

r = subprocess.call('net stop tomcat7', shell=False)
print r

如何在代码执行时让cmd窗口不出现?

0
0 Comments

问题原因:在Windows系统中,使用subprocess模块执行系统命令时,会出现控制台窗口弹出的情况。

解决方法:通过设置subprocess模块的startupinfo属性,可以在执行系统命令时避免控制台窗口的弹出。

具体代码如下:

import subprocess
subprocess.STARTF_USESHOWWINDOW = 1
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
subprocess.Popen(
    [app] + args,
    startupinfo=startupinfo,
    stderr=subprocess.PIPE,
    stdout=subprocess.PIPE)

以上代码中,首先设置subprocess模块的STARTF_USESHOWWINDOW属性为1,表示使用窗口标志。然后创建一个startupinfo对象,并将其dwFlags属性与STARTF_USESHOWWINDOW属性进行或运算,以设定启动信息的标志位。最后通过subprocess.Popen函数执行系统命令,将startupinfo对象作为参数传入,从而在执行命令时避免控制台窗口的弹出。

通过以上方法,我们可以在Python中执行系统命令时,避免控制台窗口的弹出,使程序更加美观和用户友好。

0
0 Comments

Python中执行系统命令的方法是使用subprocess模块的call函数。然而,在Windows系统中,执行系统命令时会弹出一个命令行窗口,有时候我们希望在后台执行命令,而不显示命令行窗口。

要解决这个问题,可以通过设置shell参数为True来实现在后台执行系统命令,避免弹出命令行窗口。下面是一个示例代码:

import subprocess
r = subprocess.call('net stop tomcat7', shell=True)
print r

在上面的代码中,subprocess.call函数的第一个参数是要执行的系统命令,这里是停止tomcat7服务。通过设置shell参数为True,就可以在后台执行命令,而不显示命令行窗口。

这种方法适用于Windows系统下执行系统命令时避免弹出命令行窗口的情况。如果在其他操作系统下遇到类似的问题,可能需要使用其他方法来解决。

0