Python-os.system在输出的末尾放置了一个不需要的(和不必要的)换行符和一个0
我不知道它为什么这样做,当我试图修剪它时,它会吐出一个错误Python-os.system在输出的末尾放置了一个不需要的(和不必要的)换行符和一个0,python,os.system,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
>>> 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
打印操作系统(“正常运行时间”)
21:05上升9:40,2个用户,平均负载:0.69 0.76 0.82
0
>>>打印操作系统(“正常运行时间”)[:-2]
21:07上升9:42,2个用户,平均负载:0.75 0.74 0.80
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可下标
有人知道我如何阻止这种情况发生,或者如何删除它而不出错吗?谢谢
os.system
不返回标准输出的内容。如果要捕获这些数据,请使用os.popen(“正常运行时间”).read()不必打印输出
os.system调用的实际命令打印到stdout,函数os.system()以整数形式返回命令的返回值
所以试试看
os.system('uptime')
首先在子shell中执行命令。子shell打印您看到的第一行
在Unix上,返回值是进程的退出状态。这就是您在解释器中看到的0
。您可以通过将其指定给变量来抑制此操作:
>>> x = os.system('uptime')
14:12 up 21:45, 4 users, load averages: 1.13 0.93 0.82
>>>
或者,使用:
也许您更希望在变量中捕获输出和返回的状态,以便在显示(或不显示)它们之前可以对它们进行操作:
os.system
没有做任何这样的事情;发生的情况是,uptime
本身正在写入stdout(真正的stdout,而不是Python的sys.stdout
),而os.system
正在返回uptime
的返回值,即0(表示它已成功退出)
如果要在Python中访问字符串uptime
打印到标准输出,则必须使用其他方式调用它,如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'
有关更多详细信息,请参见。虽然这样做有效,但应该注意的是,自Python 2.6以来,os.popen一直是。
>>> pipe = subprocess.Popen(['uptime'], stdout=subprocess.PIPE, shell=True)
>>>
>>> for line in pipe.stdout:
... print line
...
14:36 up 22:10, 4 users, load averages: 0.59 0.59 0.65
>>> status = pipe.wait()
>>>
>>> print status
0
>>> 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'