stdout.read
时间: 2023-09-18 17:06:20 浏览: 238
`stdout.read()`是Python中的一个方法,用于读取标准输出流(stdout)中的数据。当调用该方法时,程序会一直等待直到stdout中有数据可读,然后将其读取并返回。如果stdout中没有数据可读,则该方法会一直阻塞程序,直到有数据可读为止。一般情况下,我们会在使用`subprocess`模块时,将其与`Popen`方法一起使用,以便在执行外部命令时获取其输出。
相关问题
import paramiko import pytest import psutil from common.abs_common import log @pytest.fixture(scope="module") def ssh_client(): print('-----ssh远程连接-------') ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('10.67.6.56', username='root', password='1') yield ssh ssh.close() print("获取PCIe设备的bus number,带宽和速度") def test_network_interface(ssh_client): stdin, stdout, stderr = ssh_client.exec_command("lspci|grep -i 'non' | cut -f1 -d ' '") interface = stdout.read().decode() stdin, stdout, stderr = ssh_client.exec_command(f"lspci -s {interface} -vvv |grep -i Lnkcap | cut -f2 -d ','") widthcap = stdout.read().decode().strip() outputwidthcap = stdout.read().decode("utf-8") stdin, stdout, stderr = ssh_client.exec_command(f"lspci -s {interface} -vvv |grep -i Lnksta | cut -f2 -d ','") widthsta = stdout.read().decode().strip() outputwidthsta = stdout.read().decode("utf-8") stdin, stdout, stderr = ssh_client.exec_command(f"lspci -s {interface} -vvv |grep -i Lnkcap | cut -f3 -d ','") speedcap = stdout.read().decode().strip() outputspeedcap = stdout.read().decode("utf-8") stdin, stdout, stderr = ssh_client.exec_command(f"lspci -s {interface} -vvv |grep -i Lnksta | cut -f3 -d ','") speedsta = stdout.read().decode().strip() outputspeedsta = stdout.read().decode("utf-8") print("比较lspci中PCIe设备的带宽和速度Lnkcap和Lnksta") assert widthcap == widthsta assert speedcap == speedsta print(outputwidthcap,outputwidthsta,outputspeedcap,outputspeedsta) if __name__ == '__main__': pytest.main(['-o log_cli=True --html=./test_get_nic_width.html -s'])
这段代码是用于测试获取PCIe设备的带宽和速度,其中使用了paramiko库建立远程SSH连接,执行了一些命令来获取相关信息。在test_network_interface函数中,首先使用lspci命令获取PCIe设备的bus number,然后通过grep和cut命令获取Lnkcap和Lnksta信息,分别表示PCIe设备的带宽和速度,最后通过assert语句比较这两个值是否相等。如果测试通过,会输出相关信息,并生成一个HTML格式的测试报告。
python subprocess stdout.read1
`subprocess` 是 Python 中的一个模块,用于创建和控制子进程。`stdout.read1()` 不是 `subprocess` 模块的方法,正确的方法应该是 `stdout.read()`。
`subprocess` 模块中的 `Popen` 类用于创建子进程对象,可以通过该对象的 `stdout` 属性来访问子进程的标准输出。`stdout.read()` 方法可以读取子进程的输出。
下面是一个示例代码,演示如何使用 `subprocess` 模块读取子进程的输出:
```python
import subprocess
# 创建子进程对象
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
# 读取子进程的输出
output = process.stdout.read()
# 打印输出结果
print(output)
```
在上述代码中,`Popen` 函数接受一个列表参数,其中第一个元素是要执行的命令,后续元素是命令的参数。`stdout=subprocess.PIPE` 参数表示将子进程的标准输出重定向到管道中。
然后,我们可以使用 `stdout.read()` 方法读取子进程的输出,并将结果赋值给 `output` 变量。最后,我们可以打印输出结果。
阅读全文