gpt4 book ai didi

Python 没有从 subprocess.check_call 获取原始二进制文件

转载 作者:太空狗 更新时间:2023-10-30 00:16:37 26 4
gpt4 key购买 nike

我怎样才能让 subprocess.check_call 给我一个命令的原始二进制输出,它似乎在某处编码不正确。

详细信息:

我有一个返回如下文本的命令:

some output text “quote” ...

(那些引号是 unicode e2809d)

下面是我调用命令的方式:

f_output = SpooledTemporaryFile()
subprocess.check_call(cmd, shell=True, stdout=f_output)
f_output.seek(0)
output = f_output.read()

问题是我明白了:

>>> repr(output)
some output text ?quote? ...
>>> type(output)
<str>

(如果我将 'ord' 称为 '?',我得到 63。)我在 Linux 上使用 Python 2.7。

注意:在 OSX 上运行相同的代码对我来说是正确的。问题是当我在 Linux 服务器上运行它时。

最佳答案

哇,这是有史以来最奇怪的问题,但我已经解决了!

事实证明,它调用的程序(java 程序)根据调用位置返回不同的编码!

Dev osx 机器,正常返回字符,Linux 服务器从命令行正常返回,从 Django 应用程序调用,nope 变成“?”。

为了解决这个问题,我最终将这个参数添加到命令中:

-Dfile.encoding=utf-8

I got that idea here , 它似乎有效。还有一种方法可以在内部修改 Java 程序来执行此操作。

对不起,我责怪 Python!你们的想法是正确的。

关于Python 没有从 subprocess.check_call 获取原始二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37245595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com