在python数组中捕获bash输出

2024-04-26 09:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个bash脚本需要转换成python程序。在

我运行一个命令,并在bash数组中捕获它的输出,然后遍历它。在

diskArr=(`lsblk | grep 'disk' | awk -v col1=1 '{print $col1}'`)

这个命令给我一个系统中所有硬盘驱动器的列表,并将其存储在数组“diskArr”中。在

我试过用操作系统以及子流程.Popen也没有成功。在

^{pr2}$

Tags: 命令程序脚本bash列表系统数组grep
2条回答

到目前为止,您并没有真正地将程序转换为python,而是尝试使用python作为shell的包装器。但您也可以在python中执行greping和awking:

import subprocess
import re

lsblk = subprocess.Popen(['lsblk'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in lsblk.stdout:
    if 'disk' in line:
        parts = re.split(r'\s+', line.strip())
        name, majmin, rm, size, ro, devtype = parts[:6]
        if len(parts) > 6:
            mountpoint = parts[6]
        else:
            mountpoint = None
        print(majmin)
returncode = lsblk.wait()
if returncode:
    print("things got bad. real bad.")

这只是一个例子。如果需要引用磁盘的行的列表,可以构建一个包含“disk”的行的列表:

^{pr2}$

您可以看看官方文档中的replacing the shell pipeline,它有一个很好的例子来说明您正在尝试做什么。在

相关问题 更多 >