Python - os.system放置一个不需要的(和不必要的)换行符,并在输出结束时放置一个0

use*_*323 2 python os.system

我不知道为什么会这样做,当我试图修剪它时会吐出一个错误.

>>> print os.system('uptime')
21:05  up  9:40, 2 users, load averages: 0.69 0.76 0.82
0
>>> print os.system('uptime')[:-2]
21:07  up  9:42, 2 users, load averages: 0.75 0.74 0.80
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

有谁知道如何阻止这种情况发生或如何在没有错误的情况下将其删除?谢谢!

Cai*_*von 5

os.system没有做任何这样的事情; 发生的事情是它uptime本身正在写入stdout(真正的stdout,而不是Python的sys.stdout),并且os.system返回的返回值为uptime0(表示它已成功退出).

如果你想uptime在Python中访问字符串print到stdout,你将不得不使用其他一些方法来调用它,比如subprocess.Popen.

>>> import subprocess
>>> uptime = subprocess.Popen('uptime', stdout=subprocess.PIPE)
>>> output = uptime.stdout.read()
>>> output
' 04:20:09 up 12:13,  5 users,  load average: 0.99, 1.15, 1.25\n'
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅subprocess文档.


Ali*_*fee 2

os.system不返回标准输出的内容。如果你想捕获这些使用os.popen("uptime").read()