Python recipe(12):改变stdout的输出模式

代码:

div css xhtml xml Example Source Code Example Source Code [http://www.cnblogs.com/tomsheep/]
'''
Created on 2010-5-22

@author: lk
'''
import msvcrt,sys,os

if __name__ == '__main__':
    if sys.platform == 'win32':
#        print 'win32'
        msvcrt.setmode(sys.stdout.fileno(),os.O_BINARY)
    fd_img = open("fd.jpg", 'rb')
#    sys.stdout.write(fd_img.read())
    f1 = open("test2.txt","r")
    f2 = open("test2.txt","rb")
    
    print repr(f1.read())
    print repr(f2.read())

以上代码改写自Python Cookbook 4-13

概述:

    利用msvcrt模块的setmode函数改变输出模式

代码说明:

1. 主要解释一下Windows系统中text模式和binary模式的区别(Unix系统无此差别):text模式读取时,会将’\r\n’中的回车符去掉,变为’\n’, 输出时会将’\n’变为’\r\n’。而binary模式不做转换,和Unix中表现一样。

2. msvcrt模块即MS VC++ Runtime的缩写,包含了一些列有用的VC++ 运行时函数

3. msvcrt.setmode 改变一个文件描述符的模式,文本模式os.O_TEXT, 二进制模式 os.O_BINARY

更多msvcrt函数请见:msvcrt in Python

posted on 2010-05-23 00:16  tomsheep  阅读(1217)  评论(0编辑  收藏  举报

导航