我试图在python代码中运行下一个命令:
iostat -d 7 7 -p sda | awk '!/^Device/' | awk '!/^Linux/'
到目前为止,我尝试的方式是:
command = ["iostat", "-d", "7", "7", "-p", "sda", "|", "awk", "'!/^Device/'", "|", "awk", "'!/^Linux/'"]
device = subprocess.Popen(command, stdout=subprocess.PIPE)
devicetr = device.stdout.read()
代码似乎无法按预期处理"'!/^Device/'"
和"'!/^Linux/'"
中的引号,如'!/^Device/'
和'!/^Linux/'
当没有USB连接时,我得到的不是空白:
Linux 4.14.98-v7+ 01/28/2020 _armv7l_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
已尝试添加'\'
,并且:
Passing double quote shell commands in python to subprocess.Popen()?
subprocess
会在需要时自动添加引号李>|
不以这种方式工作。您需要通过管道传输命令:^此代码适用于我的机器,您可以根据自己的使用情况进行调整
附录。您可以使用
shlex
库(来自标准python库),而不是手动创建命令列表:相关问题 更多 >
编程相关推荐