Python 将二进制数据传递给os.system调用

Python 将二进制数据传递给os.system调用,python,os.system,Python,Os.system,我需要在python脚本中调用一个可执行文件,并将二进制数据(在同一脚本中生成)传递给该可执行文件 我让它像这样工作: bin = make_config(data) open('binaryInfo.bin', 'wb+').write(bin) os.system("something.exe " + "binaryInfo.bin") 我想我可以通过直接将“bin”传递给os.system调用来避免创建binaryInfo.bin文件: bin = make_config(data)

我需要在python脚本中调用一个可执行文件,并将二进制数据(在同一脚本中生成)传递给该可执行文件

我让它像这样工作:

bin = make_config(data)
open('binaryInfo.bin', 'wb+').write(bin)

os.system("something.exe " + "binaryInfo.bin")
我想我可以通过直接将“bin”传递给os.system调用来避免创建binaryInfo.bin文件:

bin = make_config(data)

os.system("something.exe " + bin)
但在这种情况下,我得到一个错误: “无法将'bytes'对象隐式转换为str”

有人知道这里的正确语法吗?这可能吗

os.system(b"something.exe " + bin)
我应该这样做。。但是,我不确定您是否应该通过命令行发送二进制数据。字符数可能有某种限制。此外,this.exe是否确实通过命令行接受二进制数据


我应该这样做。。但是,我不确定您是否应该通过命令行发送二进制数据。字符数可能有某种限制。此外,this something.exe是否确实通过命令行接受二进制数据?

在另一端发送和解码之前对其进行Base64编码如何。。。afaik命令行参数必须是ascii范围值(虽然这可能不是真的…但我认为是…)

另一个选择是按您当前的方式执行并传递文件


或者可以看到这个

在另一端发送和解码之前对其进行Base64编码如何。。。afaik命令行参数必须是ascii范围值(虽然这可能不是真的…但我认为是…)

另一个选择是按您当前的方式执行并传递文件

或者看看这个

有人知道这里的正确语法吗?这可能吗

os.system(b"something.exe " + bin)
不是你在做。您不能在UNIX命令行上传递任意二进制数据,因为每个参数本身都被视为以null结尾,并且有一个最大总长度限制,通常为64KB或更小

对于一些认可此约定的应用程序,您可以使用以下方式在stdin上传输数据:

pipe = os.popen("something.exe -", "w")
pipe.write(bin)
pipe.close()
但是,如果应用程序无法识别stdin的“-”,那么您可能必须像已经在做的那样使用临时文件

有人知道这里的正确语法吗?这可能吗

os.system(b"something.exe " + bin)
不是你在做。您不能在UNIX命令行上传递任意二进制数据,因为每个参数本身都被视为以null结尾,并且有一个最大总长度限制,通常为64KB或更小

对于一些认可此约定的应用程序,您可以使用以下方式在stdin上传输数据:

pipe = os.popen("something.exe -", "w")
pipe.write(bin)
pipe.close()

但是,如果应用程序无法识别stdin中的“-”,则可能需要使用一个临时文件,就像您已经在做的一样。

您试图执行的是什么命令?它是否在命令行上获取数据?您试图执行的是什么命令?它是否在命令行上获取数据?