作者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)
→ zha0:看來是python在win下的問題,用win32 api解了。 07/03 22:17
→ zha0:應該說是console 07/03 22:18
→ os653:這應該跟你程式沒關係,純粹是console不能印簡體字 07/04 11:08
→ os653:試試看把print v改成print v.encode('mbcs') 07/04 11:22
→ os653:不太確定這方法是不是因為我有裝Unicode補完計畫才有用 07/04 11:23
→ os653:而且這方法治標不治本,遇到某些字一樣會爆掉 07/04 11:24
→ os653:印象中這問題在python2.x好像無解,因為python印東西到win 07/04 11:26
→ os653:console一定會轉成console的字集,轉不了就爆了 07/04 11:28
→ os653:google console utf-8 python 會有些討論跟解法可以看看 07/04 11:30
→ os653:以上所說有錯請指正,這問題也困擾我很久了... 07/04 11:30
※ 編輯: zha0 (1.160.12.39), 07/19/2014 21:47:48