Python ST3中使用Popen的怪异输出
我正在为Sublime文本开发一个插件,由于python在该环境中的一些限制,我正在尝试使用Popen获得json答案,我正确地接收了数据,但Popen似乎在输出中添加了一些奇怪的字符 这是输出Python ST3中使用Popen的怪异输出,python,plugins,sublimetext3,popen,Python,Plugins,Sublimetext3,Popen,我正在为Sublime文本开发一个插件,由于python在该环境中的一些限制,我正在尝试使用Popen获得json答案,我正确地接收了数据,但Popen似乎在输出中添加了一些奇怪的字符 这是输出 (b'{"trink": {"id": "12"}}\r\n') 但它应该是 {"trink": {"id": "12"}} 这就是我打电话的方式: process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subproces
(b'{"trink": {"id": "12"}}\r\n')
但它应该是
{"trink": {"id": "12"}}
这就是我打电话的方式:
process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE,shell=True)
output = process.communicate()
print(output)
与
仅从原始输出中消失()
如何获得干净的输出
我使用的是Sublime text 3 Build 3083
Windows 10-64bST论坛中的用户回答我: 首先,这100%是Python的问题,与此无关 崇高的文本。这也不是一个限制,而是一个特性。真的 首先,Communication返回一个元组(stdout_数据、stderr_数据)。 您很可能只需要stdout部分,因此可以对该元组进行切片 使用
[0]
其次,默认情况下,通信返回的数据是一组
字节。如果你想的话,可以查一下。字节用中的b
表示
文本字符串的前面,可以使用
方法,其中包含字符集的参数。这
可能是utf-8或cp1252,或者只是
locale.getpreferredencoding()
。如果你用Popen和
universal\u newlines=True
参数,Python将执行该转换
为你自动
最后,到目前为止,您拥有的字符串在
最后,因为这就是你所使用的任何工具产生作用的方式
输出。如果出现问题,则必须使用.strip()将其剥离(自
它是json,很可能不是)
那么我们现在得到了什么
process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True, universal_newlines=True)
output = process.communicate()[0]#.strip()
print(output)
process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True, universal_newlines=True)
output = process.communicate()[0]#.strip()
print(output)