[英]How to run multiple linux commands in python script where order matters
我试图使用subprocess.Popen()在我的python脚本中顺序执行几个linux命令。 但是,似乎我编写脚本的方式是,python正在执行某种执行和忘记操作,而不是在开始步骤2之前不等待步骤1完成。
举例来说,我正在尝试:
发生的事情是python似乎在第1步运行了cmd,并且没有等待第1步完成,而是在第2步运行。因此,由于删除操作是在创建文件之前运行的,因此该文件仍在运行。
这是我的代码段。 希望有人能告诉我如何做到这一点,因此步骤2仅在步骤1完成后才能运行。 我试图匿名化/简化代码段,因此请原谅匿名化代码时所犯的任何错误。
sqlCmd = "ssh " + HOST + "mysql -h host -ppwd -q select blah from table where foo = 'bar' INTO OUTFILE '/tmp/blah_bydate.csv"
rmCmd = "ssh " + HOST + " rm -f /tmp/blah_bydate.csv"
proc = subprocess.Popen(sqlCmd, shell=True, stdout=subprocess.PIPE)
proc = subprocess.Popen(rmCmd, shell=True, stdout=subprocess.PIPE)
我在SO上找到了一些建议的解决方案是做类似的事情
subprocess.Popen([cmd1; cmd2; cmd3], shell=True, stdout=subprocess.PIPE)
我不想这样做,因为我的命令已参数化并且可能很长/很复杂。
只需使用subprocess.call
而不是subprocess.Popen
,它就应该阻塞直到进程完成。
您可以使用proc.wait(),如果需要的话甚至可以使用超时值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.