zoukankan      html  css  js  c++  java
  • python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出

    看了一个博客,挺不错的。http://www.cnblogs.com/turtle-fly/p/3280519.html

    标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印)。

    python最基本的操作 - 打印:

    print 1

    其效果是把 1 写在console(命令行)里面让你看。

    实际上他的操作可以理解为:把console(命令行)作为一个板子,通过sys.stdout = console指定往console板子上写东西(console是默认的,也就是说你不修改要往哪儿写的话,就会默认往这写),在print 1的时候,就是告诉python,我要写1,然后python就会去sys.stdout所指定的板子里,也就是console(命令行)里写上 1。

    (标准错误输出也是同样的过程,你会发现当程序出错时,错误信息也会打印在console里面。)

    其实只要一个对象具有write方法,就可以被当作“板子”,告诉sys.stdout去哪里写。

    说道write方法,第一个想到的可能就是文件操作了。

    f=open('log.txt','w')

    想上面那样声明一个文件对象 f,此文件对象就拥有了write方法,就可以被用来当作标准输出和保准错误输出的板子。

    f=open('log.txt','w')
    __console__ = sys.stdout    #把默认的“板子” - 命令行做个备份,以便可以改回来
    
    sys.stdout = f
    
    print 1

    sys.stdout = __console__
    print 2

    上面的操作,通过sys.stdout = f 指定打印时的板子改成了 f。所以在使用print的时候,不再是把1打印在命令行里,而是写在了log.txt文件里面。

    后面又把板子改成了命令行,此时print 2就又把2打印到命令行了

  • 相关阅读:
    Codeforces 570E
    Codeforces 570D
    Codeforces 1136E
    Codeforces 570
    小白学习sprint boot容易遇到了一些问题
    力扣 234. 回文链表
    力扣198. 打家劫舍
    力扣543. 二叉树的直径
    力扣141.环形链表
    剑指offer1.跳台阶 & 力扣70.爬楼梯
  • 原文地址:https://www.cnblogs.com/lipijin/p/3958124.html
Copyright © 2011-2022 走看看