cmd命令行结果保存到txt里,屏幕显示一行就保存一行到txt

#coding:utf-8
"""
1.重定向print
2.python与cmd命令
"""
import sys
import os
import subprocess

class Logger(object):
    def __init__(self, filename="Default.log"):
        self.terminal = sys.stdout
        self.log = open(filename, "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)
        self.log.flush()#这个用来将屏幕输出一行,就保存到txt一行,而不是等cmd运行完再保存
    def flush(self):
        pass
# path = os.path.abspath(os.path.dirname(__file__))
# type = sys.getfilesystemencoding()


def main():
    #执行cmd命令,无返回值
    sys.stdout = Logger("fps_01.txt")

    cmd="ping baidu.com"
   #第一种os模块:cmd交互第一种用os.system,无返回,使用前需要import os
    # os.system(cmd)

   #第二种os模块:os.popen,也可以写入到txt内,使用Popen模块产生新的process
    #用os模块的这两种,都是用当前进程来调用,也就是说它们都是阻塞式的

    # result = os.popen(cmd)
    # res=result.read()
    # for line in res.splitlines():
    #    print(line)
    #也可以这样,同样意思
    r = os.popen(cmd)
    info = r.readline()
    while info:
        print(info)
        info = r.readline()
    #第三种subprocess模块:执行cmd命令,不配合print重写,无返回
    # p=subprocess.Popen(cmd,shell=True)
    # p.wait()

    # 第三种subprocess模块:执行cmd命令,并读取返回值,屏幕无输出,文件有记录,
    # 如果运行cmd时产生的内容非常多,函数非常容易阻塞住。解决办法是不使用wait()方法
    # p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True)
    # #p.wait()
    # result_line = p.stdout.readline()
    #
    # while result_line:
    #     print(result_line)
    #     result_line = p.stdout.readline()



if __name__ == '__main__':
    main()

  

转载于:https://www.cnblogs.com/qiu-1010/p/10709937.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值