【发布时间】:2012-03-08 12:10:29
【问题描述】:
在运行路径名中包含 unicode 字符的批处理文件时遇到了 subprocess.open() 的问题。这在 2.6 和 2.7 中会出现问题,但在 3.2 中可以完美运行。真的只是一个一直持续到 py3k 的 bug??
# -*- coding: utf-8 -*-
o = u"C:\\temp\\test.bat" #"control" case
q = u"C:\\temp\\こんにちは.bat"
ho = open(o, 'r')
hq = open(q, 'r') #so we can open q
ho.close()
hq.close()
import subprocess
subprocess.call(o) #batch runs
subprocess.call(q) #nothing from here on down runs
subprocess.call(q, shell=True)
subprocess.call(q.encode('utf8'), shell=True)
subprocess.call(q.encode('mbcs'), shell=True) #this was suggested elsewhere for older windows
【问题讨论】:
-
顺便说一句,有许多近乎重复的内容,但我相信这与我看过的所有内容都略有不同。
-
这个问题有什么不同?
subprocess模块在 2.x 版本中存在 unicode 字符串问题。从 3.0 开始,所有字符串都是 unicode,问题就消失了。 -
好吧,这似乎是一个非常有名的错误。也许我只是无法让自己相信!
标签: python subprocess