Python中调用Popen指定英文环境
Python中调用外部程序时,如果遇到中文环境,容易产生编码混乱。
如: 使用Popen调用svn diff程序比较文件,如果lang=zh_CN,而比较文件也为中文编码
这时,svn程序返回的消息是GBK编码,当文件编码为utf-8是,会同时存在两种编码,Python无法处理这种情况。
可以通过subprocess.Popen(cmd, env={‘LANG’:’en’}),指定程序运行环境为英文
import subprocess
fn = "./sublime_svn.md"
command = ["D:/Program Files/Subversion/bin/svn.exe",
'diff',
fn]
print("command: %r" % command)
proc = subprocess.Popen(command, stdout=subprocess.PIPE, env={'lang': 'en'})
try:
outs, errs = proc.communicate(timeout=15)
except TimeoutExpired:
proc.kill()
outs, errs = proc.communicate()
print("outs %r, errs %r" % (b'\n'.join(outs.split(b'\r\n')), errs))
本文介绍如何在Python中使用subprocess.Popen调用外部程序,并通过设置环境变量LANG为'en'来避免中文环境下的编码混乱问题。具体示例为调用svn diff命令进行文件比较。
474

被折叠的 条评论
为什么被折叠?



