2013-07-22 32 views
0

我一直有一行代码的问题,只是发现了第二个有趣的问题。python脚本中的os.system命令导致错误

我有一个命令,然后当放入终端将启动一个程序,然后将输出写入输出文件。因此,由于某种原因,我一直无法将数据写入输出文件(尽管程序启动了,当我打开python打开终端并运行它时,我可以看到它吐出数据)

出于某种原因它不想将我的数据重定向到输出文件。我曾尝试在终端都做脚本,以及(蟒蛇script.py> output.out)

现在我试图在主命令之前启动睡眠命令,我从睡梦中

得到一个错误
sleep: invalid option -- 'n' 

这里是代码

os.system('gnome-terminal -e "sleep 10 ; /usr/local/bin/mpirun -np 4 /home/mike/bin/Linux-ifort_XE_openmpi-1.6_emt64/v2_0_1/Pcrystal </dev/null &> mgo.out &"') 
+0

记得接受你的问题的答案,我注意到你没有接受你的6个问题的任何答案 – Stephan

+0

Python文档建议使用子流程模块来代替。你应该阅读它。此外,你还有几个级别的子进程正在启动('os.system','gnome-terminal'和引用的命令行在'gnome-terminal'内部运行)。乍看之下,我会说分号不是由'gnome-terminal'处理的,''sleep'命令正在看到'-n'选项。 –

+0

我明白了。我已经尝试过没有成功。我试过gnome-terminal部分的原因是为了看看Pcrystal程序是否实际启动,它是做什么的。但由于某些原因,它有一个问题重定向输出,这是我主要关心的问题 –

回答

1

为了您的原始问题,(不睡觉),你的输出重定向需要一些工作,尝试:

/usr/local/bin/mpirun -np 4 /home/mike/bin/Linux-ifort_XE_openmpi-1.6_emt64/v2_0_1/Pcrystal </dev/null > mgo.out 2>&1 & 

会将标准输出和标准错误都指向文件。

+0

这仍然无效。根本没有生成输出文件。 –

+0

您是否在命令行上尝试过上述操作?没有最后的& –

+0

是的,该命令在命令行上工作,但在python脚本中调用时不起作用。 Pcrystal程序仍然运行并生成所有必要的文件,并且我可以在终端打开时看到它运行(这就是我原来添加gnome-terminal部分的原因)。但它不会将输出重定向到文件。我想知道是否可能与缓冲区有关,因为某些原因,不能将输出快速重定向? –