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

时间:2014-06-06 21:05:54

标签: python subprocess

您好我正在尝试将巨大的数组从Python传递到exe文件。然而,它无法正常工作。其实我刚刚发现了如何传递字符串参数。但是如何发送数组[1000]元素。请帮忙

import subprocess

p =  random.uniform(1.5, 1.9)


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

2 个答案:

答案 0 :(得分:2)

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

无论如何,你可以这样做:

# 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结构模块将浮点数打包成应用程序可读的二进制表示形式,并将它们泵入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()

答案 1 :(得分:0)

subprocess.call(['ConsoleApplication9.exe', *array])