我有以下代码:
#!/usr/bin/python
import sys
import subprocess
import random
import time
if len(sys.argv) != 7:
print "Usage: " + sys.argv[0] + " <executable> r m n p a"
sys.exit(1)
myexecutable = sys.argv[1]
r = int(sys.argv[2])
list_m = map(int, sys.argv[3].split(","))
list_n = map(int, sys.argv[4].split(","))
list_p = map(float, sys.argv[5].split(","))
list_a = map(int, sys.argv[6].split(","))
r1 = random.Random()
for m in list_m:
for n in list_n:
for p in list_p:
for a in list_a:
if a <= m:
for i in range(r):
print '%04.3f' % (r1.randint(1, 100))
seed = time.time()
r1 = random.Random(seed)
print m, n, p, a, i
command = myexecutable + " -seed "+ str(r1) + " -m "+ str(m) + " -n "+ str(n) +" -p "+ str(p) +" -a "+ str(a)
f = open("seed_" + str(r1) + "-m_" + str(m) + "-n_" + str(n) + "-p_" + str(p) + "-a_" + str(a)+ "-i_" + str(i) + ".xml", "w")
subprocess.call(command, shell=True, stdout=f)
f.close()
“Myexecutable”是一个用 c++ 编写的简单工作程序,除了 boost 选项外,它不调用任何复杂的库。一切似乎都很好。
当我运行以下代码时
python generate.py
我得到了一个奇怪的、令人难以置信的错误:
/bin/sh: 1: 无法打开 random.Random: 没有这样的文件
如果我评论随机相关行并将固定值设置为 r1 然后我得到以下缩进错误(大声笑):
f = open("-s_" + str(r1) + "-m_" + str(m) + "-n_" + str(n) + "-p_" + str(p) + "-a_" + str (a)+ "-i_" + str(i) + ".xml", "w") ^ IndentationError: 意外缩进
箭头指向 -a_ 所以它不可能是缩进错误,因为它位于行的中间,对吗?
所以我清理我的项目,复制到不同的目录,重新制作,然后重新运行脚本。现在循环正常运行(控制台输出和文件创建)但可执行文件似乎没有运行(文件为空)并且在每次循环迭代中我仍然收到错误:
/bin/sh: 1: 无法打开 random.Random: 没有这样的文件
amo 如果我按照上面提到的那样再次发表评论,我明白了!:
错误:选项“--seed”的参数(“eed”)无效
那么这是c ++可执行文件明显的内存泄漏(缓冲区/堆栈溢出)吗?