1
Delbert Oct 24, 2014 via Android
b是二进制。
我觉得这个不是问题…… |
3
limbo0 Oct 24, 2014 加个b
|
5
Delbert Oct 24, 2014 via Android
@dbow 我的意思是 t才可以缺省的吧?
图片本身是二进制编码的,所以需要b参数。 https://docs.python.org/3/library/functions.html?highlight=open#open 官方文档说t是缺省的,需要二进制的实习需要用b参数。 所以这个不是编码问题。应该说不加b是你编程的bug 吧…… |
7
timonwong Oct 24, 2014 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吧 |
8
zhouzm Oct 24, 2014
楼主对跨平台的期望值太高了,有时候还是需要你针对平台作些特殊处理的,这和 python 的跨平台能力无关。
|
9
clino Oct 24, 2014
这哪里是文件编码的问题,明明是你的问题...
|
12
Jaylee Oct 24, 2014
水平问题
|
13
kidlj Oct 24, 2014 via Android
在小学时候你不做作业就能考100分,到了初中再这样干只能考70分,所以是你的问题,还是中学的问题,或者是小学的问题?
|
14
happywowwow Oct 24, 2014
我也觉得这应该是LZ的问题 不是python的问题
不然应该是linux下w+图片也是乱码 |
15
dbow OP |
16
VYSE Oct 24, 2014
首先在Windows下,不加b会translate \n到\r\n,加b则不translate,应用场景下有人需要translate(因为也有人会觉得一段hello world!\n在Windows下还得加个\r?),也有人不需要translate(\n就是\n)。那如果Python统一了平台间差异,统一不translate binary模式,那又有人抱怨为啥Python没处理hello world\n的平台差异了。
|
18
VYSE Oct 24, 2014 via Android
@dbow 所以既然用了libc,python的open和c里的fopen保持一致也没有问题。open函数平台差异只能靠开发者来控制。
|
22
musics Oct 24, 2014
区别楼上已经说了,部分POSIX 不用加也不影响是因为\n还是\n,但是WINODWS不同\n要转换成\r\n,在C这部分,一直是建议读取bin就加b.还是养成 好习惯根据MAN的建议来。
|