[問題] 呼叫外部執行檔 無法開啟中文檔案

看板Python作者 (真是有趣的地方)時間12年前 (2012/12/06 02:01), 編輯推噓2(2010)
留言12則, 6人參與, 最新討論串1/2 (看更多)
平台:WinXP 假設我想利用 notepad.exe 去開啟一個新文件 如果是這樣寫沒有問題 exe = 'notepad.exe' param = 'test.txt' subprocess.Popen([exe, param], stdout=subprocess.PIPE).communicate()[0] 執行後會詢問是否要開啟 test.txt 但是如果把 param 改成 param ='測試.txt' 執行後詢問的檔名就變成亂碼 皜祈岫.txt 就算改成 param = u'測試.txt' 也沒用 如果把 param 改成 param = '許.txt' 執行會說檔案名稱、目錄名稱或磁碟區標籤語法錯誤 我再想是不是有 big-5 碼的問題 但是我改成 param = '許.txt'.encode('utf-8') 也一樣 且我文件的最前面有加上 # -*- coding: utf-8 -*- 想來問問是否有人有經驗 我是否有遺漏的地方 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.194.130 ※ 編輯: LearnRPG 來自: 140.127.194.130 (12/06 10:04)

12/06 10:15, , 1F
u'I://新文字文件.txt'.encode("big5") ?
12/06 10:15, 1F

12/06 10:17, , 2F
Windows sucks...
12/06 10:17, 2F

12/06 10:20, , 3F
我猜 你應該是要轉big5才對 我手邊win7是用big5編碼
12/06 10:20, 3F

12/06 10:24, , 4F
1F:這樣是可以的!! 2F:我也知道啊(哭 3F:感謝
12/06 10:24, 4F

12/06 10:24, , 5F
但是要是我的測試這邊改成 日文あいうえお.txt呢??
12/06 10:24, 5F

12/06 10:25, , 6F
因為畢竟是想利用 utf-8 的編碼去開檔避開各語系問題
12/06 10:25, 6F

12/06 10:28, , 7F
還是利用big5的話可以開但是會有空白 我不想裝補完計畫
12/06 10:28, 7F

12/06 10:42, , 8F
12/06 10:42, 8F

12/06 10:44, , 9F
修改lib/subprocess.py就可 3.x應該就沒這問題了吧
12/06 10:44, 9F
依照 bob大提供的這頁修改 http://bugs.python.org/file11674/Python-2.5.2-subprocess.patch exe = 'notepad.exe' param = u"測試.txt" subprocess.Popen([exe, param], stdout=subprocess.PIPE).communicate()[0] 不用加上 .encode('big5') 就可以正確了 但是還是卡在要是檔名有 非 big5 (例如日文語系)就不行 依然出現檔案名稱、目錄名稱或磁碟區標籤語法錯誤 加上 .encode('big5') 則開啟"     .txt" ... 這原因是不是出在 windows 在系統編碼上不是用 unicode ...? 但是自己去檔案總管開又可以開 所以想說是不是 python 有可用的方法 ※ 編輯: LearnRPG 來自: 140.127.194.130 (12/06 11:18)

12/06 11:31, , 10F
回報一下 依照 bob 的 3.x 沒這問題我去使用 python3.3
12/06 11:31, 10F

12/06 11:32, , 11F
可以很直覺的使用了 太感謝大家了 !!!
12/06 11:32, 11F

12/07 08:07, , 12F
encode(sys.stdin.encoding) 試看看?
12/07 08:07, 12F
文章代碼(AID): #1Gl_nuo9 (Python)
文章代碼(AID): #1Gl_nuo9 (Python)