【发布时间】:2021-08-31 12:46:35
【问题描述】:
在我的脚本中,我使用它来解码为 utf-8:
result = subprocess.run(['command'], stdout=subprocess.PIPE).stdout.decode('utf-8')
现在我需要更改需要使用管道的命令,因此根据我发现的几个示例,我需要使用 subprocess.Popen 而不是 subprocess.run。所以我有这样的事情:
r1 = subprocess.Popen(['command1'], stdout=subprocess.PIPE)
r2 = subprocess.Popen(['command2'], stdin=r1.stdout, stdout=subprocess.PIPE)
r3 = subprocess.Popen(['command3'], stdin=r2.stdout, stdout=subprocess.PIPE)
result = r3.stdout
但是,在这种情况下,我无法添加到末尾 stdout.decode('utf-8') 因为我收到错误
AttributeError: '_io.BufferedReader' object has no attribute 'decode'
谁能帮帮我,我怎样才能把它解码成utf8?
【问题讨论】:
-
对不起,我犯了一个错误。现在应该没问题了。但是我的问题没有解决。我刚刚在这里复制了错误的部分。
-
只需
subprocess.running 最终命令应该可以工作。 -
r3.stdout.read()应该是文本本身。您还可以将编码或文本参数传递给 Popen docs.python.org/3/library/subprocess.html#subprocess.Popen
标签: python subprocess decode