Chinaunix首页 | 论坛 | 博客
  • 博客访问: 188541
  • 博文数量: 79
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-25 14:40
文章分类
文章存档

2015年(1)

2014年(1)

2013年(2)

2012年(1)

2011年(5)

2010年(2)

2009年(6)

2008年(20)

2007年(27)

2006年(14)

我的朋友

分类: Python/Ruby

2009-11-02 00:17:39

    近日写一个Python的小程序,把一个list通过struct.pack写到文件里,可是每次写出来后,文件都比我写进去的字节数多了2;输出文件前先print出来数据来,都是对的。于是直接用winhex观察文件,发现每个0x0a的直接前,都加入了一个0x0d.
    一番冥想后才明白原来我用的file.open是没有用"wb"模式,而只是用了"w".这时作为字符串输出,于是
python聪明的在每个行结尾(0x0a)前加了个0x0d,变成window系统的有效行结束符!
    一个不留神,就白费了一天的功夫!


     再补一段,在写入文件时,如果字符串不能按ascii编码,应该给定编码名,如cfile.write(str.encode('utf_16_le')这样,经常出来的非ascii不能编码的警告就没有了。
阅读(3664) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~