一、os.system(“pwd”)

1.

  • 返回值依赖于系统,程序阻塞等待返回
  • 直接返回系统的调用返回值
  • windows、Linux下是不一样的

2.样例

在这里插入图片描述

二、os.popen(command[, mode[, bufize]])

1. 执行后的结果是个字符串

2. 使用

import os
result = os.popen("pwd").read()

3.样例

在这里插入图片描述

三、commands模块(Python2中的模块)

1. 有以下三个函数:

函数说明备注
getoutput(cmd)Return output (stdout or stderr) of executing cmd in a shell.返回字符串
getstatus(file)Return output of “ls -ld file” in a string.已被丢弃,不建议使用
getstatusoutput(cmd)Return (status, output) of executing cmd in a shell.返回一个元祖

2. 使用

import commands
a, b = commands.getstatusoutput("pwd")
a是退出的结果,b是输出的结果

3.样例

在这里插入图片描述

  • python 3.0 之后移除此命令,使用 subprocess代替

四、 subprocess模块

  • subprocess 模块启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。

. 样例

1. subprocess.run()

  • subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)
    在这里插入图片描述

2. Popen()

subprocess的核心,子进程的创建和管理都靠它处理。

1)subprocess.Popen(command, shell=True)
  • command是bash命令时,shell必须为True,在shell下执行command命令
  • 当command是可执行文件时,shell可任意
2)Popen对象的方法
  • poll():
    • 检查进程是否终止,如果终止返回 returncode,否则返回 None。 wait(timeout): 等待子进程终止。
  • communicate(input,timeout):
    • 和子进程交互,发送和读取数据
  • send_signal(singnal):
    • 发送信号到子进程 。
  • terminate():
    • 停止子进程,也就是发送SIGTERM信号到子进程。
  • kill():
    • 杀死子进程。发送SIGKILL 信号到子进程。
3)构造函数:
  • class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None,
    preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False,
    startupinfo=None, creationflags=0,restore_signals=True, start_new_session=False, pass_fds=(),
    *, encoding=None, errors=None)
4)样例:
  • 创建一个子进程,然后执行一个简单命令
    在这里插入图片描述
Logo

更多推荐