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

如何获取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)

你可能感兴趣的:(如何获取os.system函数返回的信息)