你们知道想在一个社区混个脸熟有多麻烦吗?
就说#coding=utf8
,去读中文路径,你就比如os.walk(r'd:\python\暴走大事件')
硬编码在代码里根本读不到任何东西,就因为代码里“暴走大事件”用 utf8 来看待,系统路径用 gbk 存的。想解决这个问题:
coding=gbk
→失去了成为世界级程序员抱负 1
yxaaa123 2015-11-09 15:38:39 +08:00
你用 vs 写,你用 c#啊,不然你换系统啊,扯没用的
|
2
paulagent 2015-11-09 15:39:04 +08:00 via Android
???
|
3
yangtukun1412 2015-11-09 15:40:43 +08:00
用 unicode
|
4
lilydjwg 2015-11-09 15:44:14 +08:00
用 Python 3 就好了嘛。
|
5
lilydjwg 2015-11-09 15:45:22 +08:00
PS: NT 内部使用的是 UTF-16LE 。就是那堆 W 结尾的 API 。 A 结尾的 API 跟 Python 2 一样,属于历史遗留问题。
|
6
wy315700 2015-11-09 15:47:43 +08:00 1
程序没写好,怪系统喽
|
7
firemiles 2015-11-09 15:48:27 +08:00
把 r 改成 u 不就行了
|
8
imn1 2015-11-09 15:52:46 +08:00
windows 运行 utf-8 的 py 程序前,先运行"chcp 65001"命令
|
9
Narcissu5 2015-11-09 15:54:14 +08:00
cmd 有项参数可以改变字符集。不过有时候 cmd 是被别的程序打开的,比如 ide ,就比较难办了。
|
10
9hills 2015-11-09 15:55:22 +08:00
os.walk(r'd:\python\暴走大事件')
你知道字符串前面加『 r 』是什么意思么。。。 |
11
zjqzxc 2015-11-09 15:56:12 +08:00
咱能用 python3 么
|
13
lsmgeb89 2015-11-09 16:18:06 +08:00
看到楼主第一句话震惊了!
|
14
9hills 2015-11-09 16:25:19 +08:00
|
15
gssdromen 2015-11-09 16:26:03 +08:00
虽然用 GBK 这点的确值得吐槽,但这真的是很好解决的问题...
|
16
lilydjwg 2015-11-09 16:30:55 +08:00
|
17
lilydjwg 2015-11-09 16:31:53 +08:00
@firemiles 那样,如果路径里有个 test 目录就不好了。 Python 2 可以 ur'...' 的。不过不一定有用, Python 2 的标准库关于 unicode 的支持是混乱的。
|
18
PythonAnswer 2015-11-09 16:34:49 +08:00
py3 无问题.
|
19
leavic 2015-11-09 16:42:44 +08:00
#coding:utf8
import os chs_path=u'中文' dir=os.path.join(os.curdir,chs_path) for item in os.walk(dir): print item ====================== 我这还是 python 2.7 ,楼主你离世界级程序员可能差了两个平行宇宙。 |
20
fengyqf 2015-11-09 16:47:57 +08:00
咱能不能不用中文做文件名?
或者知道所使用工具的特性和缺陷 |
21
9hills 2015-11-09 16:51:19 +08:00
|
22
lilydjwg 2015-11-09 16:54:54 +08:00
@9hills 你不让他用 raw string 写 Windows 路径不是让他掉进另一个坑么?还是你根本不知道 raw string 是干嘛的?我那是让你搜,没让他搜。
|
23
9hills 2015-11-09 16:55:36 +08:00
|
25
9hills 2015-11-09 16:58:04 +08:00
明明 Python 给了不能算是非常好但是还不错的跨平台解决办法,就要用一些平台独占的 tips 。。还沾沾自喜,这种写法迟早掉大坑。
|
26
xiaosha009 2015-11-09 18:46:47 +08:00
系统说:“怪我咯~”
|
27
zkd8907 2015-11-09 18:55:05 +08:00
Windows :这锅我不背
|
28
flynaj 2015-11-09 21:29:16 +08:00 via Android
还得注意 windows 10 有所变化,
|
29
fangdingjun 2015-11-09 21:50:30 +08:00 1
windows 下文件名写成这样的也可以 d:/path/file/aaa.txt,
用中文要用 unicode, u 前缀,这样 os.walk(u'd:/python/暴走大事件') os.walk 调用的是 os.listdir , os.listdir 传 unicode, 返回的也是 unicode, 传 gbk ,返回的也是 gbk 我也是踩了好多坑才明白的 |
30
shenghe 2015-11-10 08:44:48 +08:00
python 的编码支持确实是大坑。 python 的编码和包管理机制,都是设计之初就有问题的玩意
|
31
urmyfaith 2015-11-10 09:44:11 +08:00
咱能不能不用中文做文件名?
+10086 |
32
esile 2015-11-10 09:57:07 +08:00 via iPhone
py2 妥妥的可以玩
|
33
fy 2015-11-10 22:28:39 +08:00
编码的坑主要还是建议直接 py3 走起
|
34
dofine 2015-11-14 00:51:28 +08:00
公司内部还在用 Python 2.6 的飘过~
中文的坑全部都用 #coding=gbk 了。。 慢慢竟然也看习惯了。 |