首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中从os.system中删除0表单?

如何在python中从os.system中删除0表单?
EN

Stack Overflow用户
提问于 2016-05-14 17:22:42
回答 2查看 1.4K关注 0票数 4

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

代码语言:javascript
运行
复制
user_name = check_output('whoami').strip()
output = current-user

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

代码语言:javascript
运行
复制
from subprocess import check_output

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

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

代码语言:javascript
运行
复制
 subtests = check_output('/home/' + user_name + '/intel-graphics/intel-gpu-tools/tests/' + line + ' --list-subtests').strip()

它不起作用,我得到了几个python的错误,我进行了大量的研究,但是到目前为止我还没有找到一个很好的解决方法。

注:我使用python 2.7

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-14 17:56:36

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

也就是说,当您调用os.system时,任何子进程输出都会被写入到终端(或者您的主程序输出去的任何地方)。就像这样:

代码语言:javascript
运行
复制
>>> result = os.system(".../cfile --list-subtests")
subtests 1
subtests 2
>>> result
0

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

如果您想要捕获输出,请使用 module,或者使用check_output (与您在第一个示例中使用的完全一样!)或泛型Popen

代码语言:javascript
运行
复制
>>> 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
票数 1
EN

Stack Overflow用户

发布于 2016-05-14 17:32:40

命令subprocess.check_output()返回一个字符串,其中包含进程的输出。因此,您可以应用字符串方法。os.system()不返回字符串,而是返回状态,这是一个整数--而且您不能strip()一个整数。

您看到的“输出”是流程输出,它直接转储到屏幕上。如果您想使用它,请使用check_output()。这就是它的目的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37229701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档