用open("test.jpg", "w+"), 在windows下二进制流会乱掉,jpg损坏.
这个对于习惯于linux的真是个坑, 改成wb+就能兼容了。
这个对于习惯于linux的真是个坑, 改成wb+就能兼容了。
|
DelbertOct 24, 2014 via Android
1
b是二进制。
我觉得这个不是问题…… |
|
3
加个b
|
|
DelbertOct 24, 2014 via Android
5
@dbow 我的意思是 t才可以缺省的吧?
图片本身是二进制编码的,所以需要b参数。 https://docs.python.org/3/library/functions.html?highlight=open#open 官方文档说t是缺省的,需要二进制的实习需要用b参数。 所以这个不是编码问题。应该说不加b是你编程的bug 吧…… |
|
7
the 'b' is ignored on all POSIX conforming systems, including Linux. (Other systems may treat text files and binary files differently, and adding the 'b' may be a good idea if you do I/O to a binary file and expect that your program may be ported to non-UNIX environments.)
习惯Linux的也需要看看man吧 |
|
zhouzmOct 24, 2014
8
楼主对跨平台的期望值太高了,有时候还是需要你针对平台作些特殊处理的,这和 python 的跨平台能力无关。
|
|
clinoOct 24, 2014
9
这哪里是文件编码的问题,明明是你的问题...
|
|
JayleeOct 24, 2014
12
水平问题
|
|
kidljOct 24, 2014 via Android
13
在小学时候你不做作业就能考100分,到了初中再这样干只能考70分,所以是你的问题,还是中学的问题,或者是小学的问题?
|
|
happywowwowOct 24, 2014
14
我也觉得这应该是LZ的问题 不是python的问题
不然应该是linux下w+图片也是乱码 |
|
15
|
|
VYSEOct 24, 2014
16
首先在Windows下,不加b会translate \n到\r\n,加b则不translate,应用场景下有人需要translate(因为也有人会觉得一段hello world!\n在Windows下还得加个\r?),也有人不需要translate(\n就是\n)。那如果Python统一了平台间差异,统一不translate binary模式,那又有人抱怨为啥Python没处理hello world\n的平台差异了。
|
|
musicsOct 24, 2014
22
区别楼上已经说了,部分POSIX 不用加也不影响是因为\n还是\n,但是WINODWS不同\n要转换成\r\n,在C这部分,一直是建议读取bin就加b.还是养成 好习惯根据MAN的建议来。
|