【发布时间】:2013-02-07 06:07:23
【问题描述】:
save = "/root/foo/"
PERF_PATH="/root/foobar/"
所以,最初我在cmd 中有变量save 和perf_path。但现在,我想用它来代替它以增强可读性。
我想创建一个文件夹,变量 app[a] 最终将被存储到该文件夹中。
direc = os.mkdir(save + i + "-"+ j +"-" + k + "-" +l)
创建目录似乎不是问题。 但是将非字符串值变量加入字符串似乎是一个问题。
cmd = "taskset -c %s" + PERF_PATH + "perf2 stat -t %s e r4008387e1 -f -o" +save + direc + "%s.csv &" % (cpus_list[a],fpid[a],apps[a])
pro= subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE, preexec_fn=os.setsid)
TypeError: cannot concatenate 'str' and 'NoneType' objects
cmd = "taskset -c %s" + str(PERF_PATH) + "perf2 stat -t %s e r4008387e1 -f -o" +str(save) + str(direc) + "%s.csv &" % (cpus_list[a],fpid[a],apps[a])
这也没有多大帮助。
有什么办法可以解决这个问题吗?
【问题讨论】:
-
错误消息告诉您,您尝试添加的变量之一是
None。弄清楚它是哪一个。 -
但是一旦你克服了那个错误,你就会得到一个
TypeError: not all arguments converted during string formatting。问题在于%的优先级高于+,但真正的 问题是您试图同时将字符串连接和%格式混合在一起,即很难做对,即使你做对了也更难阅读。只需做一个或另一个 - 最好是%格式化,或者更好的是{}格式化。