如何 运行 shell-Python 中的命令?

How to run shell-commands in Python?

我做了一个远程控制客户端,可以接收来自服务器的命令。收到的命令将在 shell 中作为普通 cmd 命令执行。但是我怎样才能在后台执行这些命令,这样用户就不会看到任何输入或输出。


例如,当我这样做时,用户会看到发生了什么:

import os
os.system(command_from_server)

您可以使用子进程 Popen 启动 cmd 而无需等待结束:

from subprocess import Popen
pid = Popen(["ls", "-l"]).pid

Popen 有很多用于处理 stdout 和 stderr 的配置选项。请参阅官方文档。

要在后台执行命令,您必须使用 subprocess 模块。
例如:

import subprocess
subprocess.Popen("command", shell=True)

如果要执行带有多个参数的命令,例如:ls -a,代码有点不同:

import subprocess
subprocess.Popen("ls -a", shell=True)

要更改目录,您可以使用 os 模块:

import os
os.chdir(path)

但是,正如 tripleee 在下面的评论中提到的,您还可以将 cwd 参数传递给 subprocess.Popen-Method。