Python recipe(12):改变stdout的输出模式
代码:
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