执行以下命令及其变体总是会导致错误,我无法弄清楚:
// Do not re-create Random! Create it once only
// The simplest implementation - not thread-save
private static Random s_Generator = new Random();
...
// you can easiliy update the margin if you want, say, 91.234%
const double margin = 90.0 / 100.0;
int result = s_Generator.NextDouble() <= margin ? 1 : 0;
它所指的文件是什么?其他命令如ls,wc正在正常运行,该命令在终端上也运行良好但不是python脚本。
答案 0 :(得分:13)
您的command
是一个包含一个元素的列表。想象一下,如果你试图在shell上运行它:
/bin/'dd if='/dev/'sda8 count=100 skip=$(expr 19868431049 '/' 512)'
这实际上是你正在做的事情。几乎可以肯定,dd if=
目录中没有名为bin
的目录,而dev
目录下的sd8 count=100 skip=$(expr 19868431049
目录几乎肯定没有512
目录其中包含名为command = ['/bin/dd', 'if=/dev/sda8', 'count=100', 'skip=$(expr 19868431049 / 512)']
print subprocess.check_output(command) # notice no []
的程序的目录。
你想要的是一个列表,其中每个参数都是它自己的元素:
$(expr 19868431049 / 512)
但这带来了我们的第二个问题:dd
不会被Python或command = ['/bin/dd', 'if=/dev/sda8', 'count=100',
'skip={}'.format(19868431049 // 512)]
print subprocess.check_output(command)
解析;那个bash语法。当然,你可以用Python而不是bash做同样的事情:
shell=True
或者,如果你真的想在没有充分理由的情况下使用bash,请传递字符串而不是列表,然后使用command = "/bin/dd if=/dev/sda8 count=100 skip=$(expr 19868431049 / 512)"
print subprocess.check_output(command, shell=True) # still no []
:
/bin/sh
虽然这仍然无法移植,但由于默认shell为$(…)
,它可能不知道如何处理像expr
(和expr
这样的基础知识,尽管我认为POSIX要求command = "/bin/dd if=/dev/sda8 count=100 skip=$(expr 19868431049 / 512)"
print subprocess.check_output(command, shell=True, executable='/bin/bash')
作为一个单独的进程存在...)。所以:
Sharepoint 2007
答案 1 :(得分:0)
这对我使用$this->addColumn('news', 'priority', 'integer AFTER `name`');
subprocess.popen