阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

怎样在Python中执行cmd

38次阅读
没有评论

共计 1505 个字符,预计需要花费 4 分钟才能阅读完成。

导读 这篇文章主要给大家分享在 Python 中执行 cmd,下文描述了三个方法使用 os.system() 方法、使用 os.popen() 方法、使用 subprocess.Popen(), 需要的朋友可以参考一下

怎样在 Python 中执行 cmd

1、使用 os.system() 方法

os.system 用来执行 cmd 指令,在 cmd 输出的内容会直接在控制台输出,返回结果为 0 表示执行成功。

示例代码:

# coding:utf-8
 
import os
 
os.system("ls")

PS:os.system() 方法是简单粗暴的执行 cmd 指令,没有办法获取到 cmd 输出的内容。

PPS:os.system() 方法在调用完 shell 脚本后,返回一个 16 位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system 函数返回值的高位数则是 1,如果低位数是 0 的情况下,则函数的返回值是 0x0100, 换算为十进制得到 256。

2、使用 os.popen() 方法

os.popen() 方法用于从一个命令打开一个管道。在 Unix,Windows 中有效。os.popen 返回的是一个 file 对象,同 open 打开文件一样操作。

popen() 方法语法格式如下:

os.popen(command[, mode[, bufsize]])

参数:

command – 使用的命令。mode – 模式权限可以是‘r'(默认) 或‘w'。bufsize – 指明了文件需要的缓冲大小:0 意味着无缓冲;1 意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的 bufsize 意味着使用系统的默认值,一般来说,对于 tty 设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。

示例代码:

# coding:utf-8
 
import os
 
# popen 返回文件对象,同 open 操作一样
f = os.popen(r"ls", "r")
 
l = f.read()
print(l)
f.close()

返回值是文件对象的推荐处理方法:

with os.popen(cmd, "r") as p:
    r = p.read()

使用它,不需要显式的写 p.close()。

PS:os.popen() 方法是非阻塞的。

3、使用 subprocess.Popen()

python2.4 版本后, 提供了 subprocess 这个模块来产生子进程, 并且可以连接到子进程的标准输入、输出、错误中,还可以获得子进程的返回值。

subprocess.Popen() 的定义如下:

class subprocess.Popen( args, 
  bufsize=0, 
  executable=None,
  stdin=None,
  stdout=None, 
  stderr=None, 
  preexec_fn=None, 
  close_fds=False, 
  shell=False, 
  cwd=None, 
  env=None, 
  universal_newlines=False, 
  startupinfo=None, 
  creationflags=0)

其参数意义在此不赘述。一段简单的示例代码:

# coding:utf-8
 
import subprocess
 
p = subprocess.Popen("ls", shell=True, stdout=subprocess.PIPE)
r = p.stdout.read()
print(r)

PS:subprocess 提供了 2 种方法调用子程序。subprocess.call() 是阻塞式的,subprocess.Popen() 是非阻塞的。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1505字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中