如何将大型数组从Python传递到exe文件
你好,我正在尝试把一个很大的数组从Python传递到一个exe文件里。但是它没有正常工作。其实我刚刚找到了一种传递字符串参数的方法。但是我该怎么发送一个包含1000个元素的数组呢?请帮帮我。
import subprocess
p = random.uniform(1.5, 1.9)
subprocess.call(['ConsoleApplication9.exe', '176777777777777777777777'])
2 个回答
0
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们写的代码有小错误,或者是我们没有理解某些概念。对于初学者来说,遇到问题时不要着急,先冷静下来,仔细检查自己的代码,看看有没有拼写错误、漏掉的符号或者逻辑上的问题。
另外,网上有很多资源可以帮助我们解决问题,比如StackOverflow这个网站。在这里,很多程序员会分享他们遇到的问题和解决方案。你可以在这里搜索你遇到的具体问题,看看别人是怎么解决的,或者直接提问,寻求帮助。
记住,编程是一个不断学习和实践的过程,遇到问题是很正常的。多动手,多尝试,你会慢慢变得更熟练的。
subprocess.call(['ConsoleApplication9.exe', *array])
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的struct模块,把浮点数打包成应用程序可以读取的二进制格式,然后通过标准输入(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()