您好我正在尝试将巨大的数组从Python传递到exe文件。然而,它无法正常工作。其实我刚刚发现了如何传递字符串参数。但是如何发送数组[1000]元素。请帮忙
import subprocess
p = random.uniform(1.5, 1.9)
subprocess.call(['ConsoleApplication9.exe', '176777777777777777777777'])
答案 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])