subprocess.Popen(cmd)包含中文怎么办


在windows中通过subprocess调用cmd命令行,命令中包含中文是很令人头痛的事。

由于cmd控制台用的是gbk编码,而python用的是utf-8。utf-8的字符串,在gbk编码的控制台上运行,当然会运行不了。

假如再要你兼容繁体版的windows,此时更麻烦了。还好python提供了本地化接口

  • 本地化
>>> import locale
>>> locale.getdefaultlocale()
('zh_CN', 'cp936')
  • 示例
import locale
cmd = cmd.encode(locale.getdefaultlocale()[1])
subprocess.Popen(cmd)


上篇: 32位python在windows中os.system返回码一直为0 下篇: 同时管理git与svn两种仓库