作者zha0 (这个帐号是挂网用)
站内Python
标题[问题] 中文档名问题
时间Tue Jul 3 19:04:35 2012
Console default big5
Python Shell(GUI) Unicode
Windows XP SP3 BIG5, Python 2.7.1
--------------------------------------------------
#coding=utf-8
import os
import sys
#reload(sys)
#sys.setdefaultencoding('utf-8')
fileList = []
rootdir = unicode(sys.argv[1])
#rootdir = u'c:\'
for root, subFolders, files in os.walk(rootdir):
for file in files:
v = os.path.join(root,file)
print v
#f=open(v.encode(sys.getfilesystemencoding()), "r")
f=open(v, "r")
f.close()
fileList.append(os.path.join(root,file))
print len(fileList)
---------------------------------------------------
c:\test\SYMANTEC防火墙.wps
上面的程式在 Console 跑时
程式最前面加了 #coding=utf-8 在繁体中文的档名中都没什麽问题,
但遇到了简体中文, 就会出错了 .
上面程式在 Python Shell(GUI) 跑时
在这个环境下跑都没什麽问题(简体中文 OK), 但 GUI 很吃资源, print 太多东西很快就掉了(很慢)
请问要怎麽让 Console 下可以处理简体中文档名?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.121.210
※ 编辑: zha0 来自: 220.135.121.210 (07/03 19:07)
1F:→ zha0:看来是python在win下的问题,用win32 api解了。 07/03 22:17
2F:→ zha0:应该说是console 07/03 22:18
3F:→ os653:这应该跟你程式没关系,纯粹是console不能印简体字 07/04 11:08
4F:→ os653:试试看把print v改成print v.encode('mbcs') 07/04 11:22
5F:→ os653:不太确定这方法是不是因为我有装Unicode补完计画才有用 07/04 11:23
6F:→ os653:而且这方法治标不治本,遇到某些字一样会爆掉 07/04 11:24
7F:→ os653:印象中这问题在python2.x好像无解,因为python印东西到win 07/04 11:26
8F:→ os653:console一定会转成console的字集,转不了就爆了 07/04 11:28
9F:→ os653:google console utf-8 python 会有些讨论跟解法可以看看 07/04 11:30
10F:→ os653:以上所说有错请指正,这问题也困扰我很久了... 07/04 11:30
※ 编辑: zha0 (1.160.12.39), 07/19/2014 21:47:48