如何将大型数组从Python传递到exe文件

如何将大型数组从Python传递到exe文件,python,subprocess,Python,Subprocess,嗨,我正在尝试将大型数组从Python传递到exe文件。然而,它不能正常工作。实际上,我刚刚找到了如何传递字符串参数。但是如何发送数组[1000]元素。请帮忙 import subprocess p = random.uniform(1.5, 1.9) subprocess.call(['ConsoleApplication9.exe', '176777777777777777777777']) 命令参数始终是字符串,它们需要采用被调用的应用程序所期望的格式。您可以将数组转换为字符串,

嗨,我正在尝试将大型数组从Python传递到exe文件。然而,它不能正常工作。实际上,我刚刚找到了如何传递字符串参数。但是如何发送数组[1000]元素。请帮忙

import subprocess

p =  random.uniform(1.5, 1.9)


subprocess.call(['ConsoleApplication9.exe', '176777777777777777777777'])

命令参数始终是字符串,它们需要采用被调用的应用程序所期望的格式。您可以将数组转换为字符串,但它对于命令行来说太大了,它甚至是应用程序想要的格式吗

无论如何,你可以:

# create a 10000 element array
array = [random.uniform(1.5, 1.9) for _ in range(10000)]
# try the call
subprocess.call(['ConsoleApplication9.exe'] + [str(d) for d in array])
但是它无法工作,因为命令行对于系统来说太长了

另一种方法是使用python struct模块将浮点数打包成可由应用程序读取的二进制表示形式,并将它们输入到其stdin中。需要编写应用程序才能从stdin中读取它们

import struct
import subprocess
import random

array = [random.uniform(1.5, 1.9) for _ in range(10000)]
proc = subprocess.Popen(['ConsoleApplication9.exe'], stdin=subprocess.PIPE)
for item in array:
    proc.stdin.write(struct.pack('f', item))
proc.stdin.close()
proc.wait()

ConsoleApplication9.exe
作为参数需要什么?只是一大串数字,如下图所示:
ConsoleApplication9.exe 1 2 34 56 765
?这是我找到的示例。我需要传递巨大的数组,而不是像float[10000]这样的问题,我不知道如何做。因为在本例中,第二个参数是string。因此,我无法传递对象或任何东西,请提供一个有效示例,说明如何使用多个参数调用.exe应用程序。如果您不知道这一点,那么我们就无能为力。但这就是问题所在,您不能调用具有10000个参数的程序。你也许可以在stdin上介绍他们,这就是为什么人们会问这个问题。非常感谢!这已经很重要了。
subprocess.call(['ConsoleApplication9.exe', *array])