python 调用cmd,不显示cmd黑框

python 调用系统命令的方式有很多

1.1   os.system(command)

在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态。这实际上是使用C标准库函数system()实现的。这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。

1.2   os.popen(command,mode)

打开一个与command进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是’r‘)。如果mode为’r‘,可以使用此函数的返回值调用read()来获取command命令的执行结果。

1.3   commands.getstatusoutput(command)

  使用os.popen()函数执行command命令并返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。

2.1   subprocess.call(["some_command","some_argument","another_argument_or_path"])

subprocess.call(command,shell=True)

2.2   subprocess.Popen(command, shell=True)

如果command不是一个可执行文件,shell=True不可省。

使用subprocess模块可以创建新的进程,可以与新建进程的输入/输出/错误管道连通,并可以获得新建进程执行的返回状态。使用subprocess模块的目的是替代os.system()、os.popen*()、commands.*等旧的函数或模块。

  最简单的方法是使用class subprocess.Popen(command,shell=True)。Popen类有Popen.stdin,Popen.stdout,Popen.stderr三个有用的属性,可以实现与子进程的通信。

使用os.system和subprocess.call的时候都会有一闪而过的cmd黑框,让人很不爽,使用os.popen后台执行,也可以,能够返回执行的信息

使用subprocess.Popen这个方法很方便,返回tuple类型,对于结果也有好处理的方式

host = ‘192.168.200.64’

ret = subprocess.Popen("ping -n 1 -w 1 %s " % host, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

print(ret)

print(ret.communicate())

<subprocess.Popen object at 0x0000000002857CC0>

(b‘\r\n\xd5\xfd\xd4\xda Ping 192.168.50.31 \xbe\xdf\xd3\xd0 32 \xd7\xd6\xbd\xda\xb5\xc4\xca\xfd\xbe\xdd:\r\n\xc7\xeb\xc7\xf3\xb3\xac\xca\xb1\xa1\xa3\r\n\r\n192.168.50.31 \xb5\xc4 Ping \xcd\xb3\xbc\xc6\xd0\xc5\xcf\xa2:\r\n    \xca\xfd\xbe\xdd\xb0\xfc: \xd2\xd1\xb7\xa2\xcb\xcd = 1\xa3\xac\xd2\xd1\xbd\xd3\xca\xd5 = 0\xa3\xac\xb6\xaa\xca\xa7 = 1 (100% \xb6\xaa\xca\xa7)\xa3\xac\r\n‘, b‘‘)

时间: 2024-08-10 23:27:11

python 调用cmd,不显示cmd黑框的相关文章

mfc调用cmd执行完保留黑框

mfc调用cmd的方法有很多,本文采用 ShellExecute ShellExecute(AfxGetMainWnd()->m_hWnd,L"open",L"cmd",L"/k ping 127.0.0.1",NULL, SW_SHOW ); 如上,即可保留黑框, 如果使用: ShellExecute(AfxGetMainWnd()->m_hWnd,L"open",L"cmd",L"

取得窗口句柄和标题,跨类调用并实时显示在编辑框中(VS2010)

接上篇日志. 在WM_LBUTTONUP消息响应函数中写入代码: POINT pnt; WCHAR  wc_TargtWndTittle[200]; ::GetCursorPos(&pnt);      HWND h_TargetWnd = ::WindowFromPoint(pnt) ; //取得鼠标指针处窗口句柄;      ::GetWindowText(h_TargetWnd,wc_TargtWndTittle,200); 将wc_TargtWndTittle显示在对话框程序的编辑框控件

测试:python调用cmd命令三种方法

目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中"exit 1"的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的返回值是0×100,换算为10进制得到256. 如果我们需要获得os.system的正确返回值,那使用位移运算可以还原返回值: >>>

golang编译的程序在windows下不显示黑框

如题,一个编译参数,备忘: -ldflags="-H windowsgui" 别的平台不适用 golang编译的程序在windows下不显示黑框,布布扣,bubuko.com

Python利用多线程定时执行cmd命令关机

利用os模块可以执行cmd命令,利用这一点可以实现定时关机,然而在等待关机的过程中也不能啥都不干,于是多线程派上了用场. #! /usr/bin/env python #coding=utf-8 #这里需要引入三个模块 import time, os, sched, easygui, thread # 第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数 # 第二个参数以某种人为的方式衡量时间 schedule = sched.scheduler(time.time, time.sle

Jmeter运行不显示cmd对话框

1.Jmeter运行不显示cmd对话框 如图所示,在Jmeter的bin目录下新建一个vbs的脚本,脚本内容为: Dim wsh Set wsh=WScript.CreateObject("WScript.Shell") wsh.run "jmeter.bat",0

opencv3+python报错问题(cmd命令正常)

2018-03-0223:58:59 首先在你已成功安装python的情况下运行cmd命令,下载安装opencv插件 如果在命令行可以使用 import cv2 但是在IDE上面只输入import cv2就报错,那就是IDE的配置问题 可按照下图解决 之后找到cv.2的地址 添加pip命令安装的python opencv脚本地址如下 最后的测试代码 import cv2 as cv src=cv.imread("E:/opencv_pictures/test.jpg") cv.name

win10的cmd中显示:telnet不是内部或外部命令也不是可运行的程序或批处理?

win10的cmd中显示:telnet不是内部或外部命令也不是可运行的程序或批处理? 摘录自:https://blog.csdn.net/haijing1995/article/details/66475546 telnet命令? telnet命令用于登录远程主机,对远程主机进行管理. 举个栗子:在cmd中运行telnet  localhost  8431  也就等同于在浏览器中输入localhost:8431 telnet 127.0.0.1 11211 用于连接 memcached 问题分析

Python调用(运行)外部程序

在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32process模块中的函数.如果想进一步控制进程,则可以使用ctype模块,直接调用kernel32.dll中的函数. 1 使用os.system函数运行其他程序2 使用ShellExecute函数运行其他程序3 使用CreateProcess函数运行其他程序4 使用ctypes调用kernel32.dl