python的标准输入,输出,错误输出。

发布时间:2019-08-26 07:19:02编辑:auto阅读(1914)

    1:标准输入:

        python中的sys模块有标准输入,标准输出,以及标准错误输出的方法。

    #!/usr/bin/env python
    #coding:utf-8   #添加中文输出
    
    import sys
    fd = sys.stdin  #程序等待输入
    data = fd.read()  #把输入的值赋给变量
    sys.stdout.write(data + "\n") #借助于write方法把data的值传送给标准输出。
    print data,
    #print data  #也可以借助于print函数来输出,print函数的输出默认的结果时多带一个换行符的,若想去掉换行符可以在左后面加一个>逗号

    输出结果如下:

    [root@lianxi1 Day01]# python Day01.py 
    wer
    rew
    wer       #标准输出的结果
    rew
    
    wer        #print的输出
    rew

    2:从标准输入统计输入的行数:

    #!/usr/bin/env python
    #coding:utf-8
    #统计行数,实现wc -l的功能
    import sys
    def lineCount(fd): #定义函数第二个单词首字母大写。类每一个单词的首字母大写
        n = 0
        for i in fd: #fd是文件对象(可以直接遍历),可以换为fd.readlines(),返回的是一个列表
    
           n += 1
        return n
    fd = sys.stdin
    print lineCount(fd)

    输出结果如下:

    [root@lianxi1 Day01]# python Day02.py 
    dfs
    sdf                    #输入结束后需要按ctrl-D结束。
    2
    [root@lianxi1 Day01]#

    3.用python编程实现wc的功能。

        需求:1.要实现wc的统计单词,统计字符,统计行数的功能。

            2.若文件不存在则需要给出提示。

    #!/usr/bin/env python
    #coding:utf-8
    
    #导入模块
    import sys, os
    #!/usr/bin/env python
    #coding:utf-8
    
    #导入模块
    import sys, os
    if len(sys.argv) > 1 :#可以统计多个文件
        for i in sys.argv[1:]:
            #判断文件是否存在
            if not os.path.exists(i):
                print "%s is not exists" % i
                sys.exit()
            fd = open(i)
            data = fd.read()
            lens = data.count('\n')
            words = len(data.split())
            chars = len(data)
            print lens, words, chars
    else:
        data = sys.stdin.read()
        lens = data.count('\n')
        words = len(data.split())
        chars = len(data)
        print lens, words, chars

    结果如下:

    [root@lianxi1 python100]# python lianxi1.py  /etc/hosts  /etc/passwd
    2 10 158
    31 52 1457
    [root@lianxi1 python100]#

    这个wc的功能不是很完善,只是做了一些统计而已。

    4.标准输出中的缓存。

    #!/usr/bin/env python
    #coding:utf-8
    import sys
    import time
    for i in range(10):
        sys.stdout.write("str:%d\n" %i)#一秒出一个
        time.sleep(1)
        #sys.stdout.flush() #刷新缓存,执行的加-u选项效果一样

    输出结果:

    [root@lianxi1 Day01]# python Day05.py  
    str:0
    str:1
    str:2
    str:3
    str:4
    str:5
    str:6
    str:7
    str:8
    str:9
    [root@lianxi1 Day01]# python Day05.py  | cat -
    str:0
    str:1
    str:2
    str:3
    str:4
    str:5
    str:6
    str:7
    str:8
    str:9
    [root@lianxi1 Day01]# python -u Day05.py  | cat -#‘-’是对输出流用cat来处理
    str:0
    str:1
    str:2
    str:3
    str:4
    str:5
    str:6
    str:7
    str:8
    str:9
    [root@lianxi1 Day01]# 注意官产三种方法的效果


关键字