Python中调用Popen指定英文环境

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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值