gpt4 book ai didi

python - 如何从 python 中的 os.system 中删除 0 表单?

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:03 25 4
gpt4 key购买 nike

我想知道如何在 python 中从 os.system 中删除 0,例如,在这个变量中我可以毫无问题地删除它:

user_name = check_output('whoami').strip()
output = current-user

但问题是当我运行这个变量时:

from subprocess import check_output

subtests = os.system('/home/' + user_name + '/tests/cfile --list-subtests')
output = subtests 1
subtests 2
0

如果我从第一个命令中应用相同的命令结构,例如

 subtests = check_output('/home/' + user_name + '/intel-graphics/intel-gpu-tools/tests/' + line + ' --list-subtests').strip()

它不起作用,我遇到了几个 python 错误,我进行了很多研究,但到目前为止我找不到很好的修复方法。

注意:我使用的是 python 2.7

最佳答案

当您调用 os.system 时,它会启动一个新进程。该进程的标准输入和输出流连接到您的 Python 程序。

即当您调用 os.system 时,无论子进程输出被写入终端(或主程序输出的任何位置)。就像这样:

>>> result = os.system(".../cfile --list-subtests")
subtests 1
subtests 2
>>> result
0

上面的“subtests 1”/“subtests 2”行只是从子进程传递到终端的文本。它从未被 Python 处理过或转到任何变量。返回值为 0,这通常意味着操作已成功完成。

如果要捕获输出,请使用 the subprocess modulecheck_output(与您在第一个示例中使用的完全一样!)或通用 Popen:

>>> process = subprocess.Popen([".../cfile", "--list-subtests"], stdout=subprocess.PIPE)
>>> process_out, process_err = process.communicate()
>>> process_out
'subtests 1\nsubtests 2\n'
>>> process.returncode
0

关于python - 如何从 python 中的 os.system 中删除 0 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37229701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com