python中最简单的方法是打开两个不同的'cmd'窗口,并在每个窗口中执行两个不同的命令

时间:2017-10-07 16:40:31

标签: python windows mongodb cmd

我需要在python中运行一个脚本,每周备份一次我的mongodb数据库。我在Windows 8.1中使用了任务调度程序,并将脚本设置为在特定时间的特定工作日运行。关键是我的python代码需要生成2个命令行窗口实例,以便在第一个实例中它可以输入建立mongoserver连接的“mongod”命令,在cmd窗口的第二个实例中,需要输入“mongodump”命令,这些只需按此顺序完成和完成。我在python中使用了'os'模块并使用了“os.system('所需的cmd命令')”但是如果使用'os.system'则第二次启动第二个cmd实例,它关闭第一个cmd实例窗口并运行self(第二个实例),以便所需的进程被中断。我需要确保第一个命令'mongod'和第二个命令'mongodump'将自动输入来自已编写的python代码本身的相应cmd窗口,不能手动或从外部输入任何内容。 我尝试过的事情是:: 1)

import os  
os.system('mongod')      //this stops
os.system('mongodump')  //this starts

2)

import os
os.system('mongod && mongodump')  

//第一个继续,第二个命令是    从来没有到达

因此我需要运行2个单独的cmd窗口实例,因为命令'mongod'建立了连接,之后在cmd窗口中无法写入任何内容,因此'mongodump'命令只能并且需要在其他cmd窗口中执行。请注意,即使可以启动两个cmd窗口实例,但是进入mongod和mongodump命令也不能由用户手动完成,并且必须在python代码本身中预定义。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以使用简单的Windows .bat或.cmd脚本执行此操作,如下所示:

START /B "" mongod
TIMEOUT /T 10 /NOBREAK
mongodump

只需在合适的时间运行它,它应该为您启动这两个过程。我认为一旦主脚本完成,mongod进程将自动终止(参见https://superuser.com/questions/198525/how-can-i-execute-a-windows-command-line-in-background#comment1569081_591084)。