相关文章推荐

先举一个Android查询连接设备的命令来看看Python中subprocess.Popen怎么样的写法。用到的命令为 adb devices。

import subprocess
order='adb devices'  # 获取连接设备
pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)
print(pi.stdout.read())  # 打印结果

命令的结果返回是一次性的,所以我们用read方法读取数据是没有问题的,然而adb命令里还有一些是实时返回结果的,比如输出手机日志的命令logcat,结果会不断的打印出来当前的设备操作日志信息内容,这种类型的命令我们在Python中如果需要获取打印结果,如果还是用read方法的话,等待结果的返回时间会非常长,这里我们就要换一种方法读取结果,写法如下。

import subprocess
order='adb logcat'
pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)
for i in iter(pi.stdout.readline,'b'):
    print(i)  # 打印结果

这样的打印效果,如同cmd里操作一致,实时的打印出日志信息。这里我们就用到了readline方法和iter()函数,其实这种写法类似我们读取文件,单行读取和全部内容读取。

执行系统命令,可以获取执行系统命令的结果 p = subprocess.Popen('ps aux',shell=True,stdout=subprocess.PIPE) out,err = p.communicate() for line in out.splitlines():
import subprocess proc = subprocess.Popen([‘python’, ‘test.py’], stdout=subprocess.PIPE) while 1: print proc.poll() #while 1: print “hello” print “hello” 测试代码如上,poll函数返回码: 0 正常结束 1 sleep 2 子进程不存在 -15 kill None 在运行 poll的返回: A None value indicates that the p
正常的 os.system() 执行完后只会返回个执行状态值,返回的 0 表示执行成功,1 表示执行失败。 如果想要获取到执行后的结果集,就需要用到管道命令 os.popen(),然后用 read() 方法可以读到返回的结果。subprocess.Popen() 命令也可以获取返回的结果。 os.system() 方法获取命令返回结果演示。 subprocess.Popen() 方法获取命令返回结果演示。
windows下python subprocess.Popen执行adb 命令进程无法终止 logcmd = "adb logcat -v time > C:/log.txt" self.Popen = subprocess.Popen(logcmd,stdout = subprocess.PIPE,shell=True) 用上面的方法来获取logcat的信息,它的实际原理是另外开启一个cmd命令来运行adb logcat的命令,即使后面用popen.terminate()也只能关闭cmd的命.
subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值Popensubprocess的核心,子进程的创建和管理都靠它处理。 subprocess.Popen subprocess模块定义了一个类: Popen class Popen(object): """ Execute a child program in a new process. For a complete description of the arguments 使用subprocess模块,本模块为开辟子进程去执行子程序提供了统一的接口 process = subprocess.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE) output, unused_err = process.communicate(timeout=3
pythonsubprocess.Popen 总结 subprocess的目的就是启动一个新的进程并且与之通信。 subprocess模块中只定义了一个类: Popen。可以使用Popen来创建进程,并与进程进行复杂的交互。它的构造函数如下: subprocess.Popen(args, bufsize=0, executable=None, stdin=None,
# 执行 Studio 3T 命令并连接 MongoDB subprocess.Popen([studio3t_command, "--eval", f"connect('{mongodb_uri}')"]) 在上面的代码中,我们首先定义了 Studio 3T 命令和连接 MongoDB 的 URI。然后,我们使用 `subprocess.Popen` 执行 Studio 3T 命令,并使用 `--eval` 参数传递一个连接 MongoDB 的脚本。这个脚本使用了 MongoDB 的 `connect` 方法来连接到指定 URI。 当你运行上面的代码时,它会打开 Studio 3T 并自动连接到 MongoDB。你可以根据需要修改 MongoDB 的 URI 来连接到不同的数据库。
 
推荐文章