如何获取os.system函数返回的信息

戏子无情 提交于 2020-02-12 22:43:53

如何获取os.system(‘ipconfig/all’)返回的结果?

popen函数和system函数区别

  • popen() 创建一个管道,通过fork或者invoke一个子进程,然后执行command。返回值在标准IO流中,由于是在管道之中,因此数据流是单向的,command只能产生stdout或者读取stdin,因此type只有两个值:‘w’或‘r’。r表示command从管道中读取数据流,而w表示command的stdout输出到管道中。command无法同时读取和输出。popen返回该FIFO数据流的指针
  • system()函数先fork一个子进程,在这个子进程中调用/bin/sh -c来执行command指定的命令。/bin/sh在系统中一般是个软链接,指向dash或者bash等常用的shell,-c选项是告诉shell从字符串command中读取要执行的命令(shell将扩展command中的任何特殊字符)。父进程则调用waitpid()函数来为变成僵尸的子进程收尸,获得其结束状态,然后将这个结束状态返回给system()函数的调用者。返回值: 0、1、-1等int的数字

os.system(command)返回的信息

  • 用os.system(‘ipconfig/all’))的时候只返回的是数字0,不是想要的信息。
    想获取command返回的信息,需要使用os.popen(‘ipconfig/all’)。
import os
myfile = r'D:\信息.txt'
mycmd='ipconfig/all'
s = "".join(os.popen(mycmd).readlines())
print(s)
with open(myfile, 'w') as f:
    f.write(s)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!