1
codepurple 2016-09-14 21:46:06 +08:00
不是中文转换问题,是 imgs 目录没有创建报的错误
|
2
Arnie97 2016-09-14 21:52:24 +08:00 via Android
reload(sys); sys.setdefaultencoding('utf-8') 差评
|
3
zhijiansha OP @Arnie97 -。-# 这个不要么?
|
4
qqmishi 2016-09-14 22:18:58 +08:00 via Android
和中文无关,报错是没有这个文件或目录,应该是你目录没建立或者路径不对
|
5
zhijiansha OP @qqmishi
Traceback (most recent call last): 琼斯的自由国度 File "C:\Users\123\Desktop\dianyingtiant.py", line 51, in <module> with open('imgs/'+str(y)+'.jpg', "wb") as f: IOError: [Errno 22] invalid mode ('wb') or filename: 'imgs/\xe7\x90\xbc\xe6\x96\xaf\xe7\x9a\x84\xe8\x87\xaa\xe7\x94\xb1\xe5\x9b\xbd\xe5\xba\xa6.jpg' [Finished in 0.7s with exit code 1] |
6
qqmishi 2016-09-14 22:47:46 +08:00
@zhijiansha 我在 Ubuntu 下就执行成功了,,,应该是 windows 系统本身的锅。
|
7
qqmishi 2016-09-14 22:49:14 +08:00
@zhijiansha 反应过来了,,,你这是从例子代码里改出来的吧, windows 和 linux 的分隔符是反的。 http://blog.csdn.net/kazeik/article/details/8742953 ,可以参考一下。
|
8
Arthur2e5 2016-09-15 23:10:17 +08:00 1
@qqmishi 不是分隔符的问题。观察 \x... 那段序列和 get_url 的处理可知这玩意是 UTF-8 ,在 Windows 下默认对 str 用 ANSI API 当然会抓瞎。
解决方式很简单,不要用编码逻辑混乱的 python2 str ,要用 py2 也给我去用 unicode 。 |
9
qqmishi 2016-09-16 01:21:07 +08:00
@Arthur2e5 你是对的,改成 with open('imgs/'+unicode(y).encode('gbk')+'.jpg', "wb") as f:在 windows 下可以执行了
|
10
Arthur2e5 2016-09-27 11:01:51 +08:00 1
@qqmishi 我求求你了真的不要 encode gbk ,硬要用 py2 就好好用 unicode 数据类型行不行?
你用 gbk 对付 cp936 ANSI API 是吧,我一个欧元符号就可以把你搞死。 更不要说非中文版 Windows 了。 |
11
zhijiansha OP @Arthur2e5 那最合适的处理方式应该是??
|
12
Arthur2e5 2016-10-05 12:41:55 +08:00
@zhijiansha 换成 python3 立地成佛,或者 python2 去乖乖用 unicode 数据类型。我感觉我说了很多遍了啊。
|