gpt4 book ai didi

python - 如何在顺序很重要的 python 脚本中运行多个 linux 命令

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:41 25 4
gpt4 key购买 nike

我正在尝试使用 subprocess.Popen() 在我的 python 脚本中顺序执行多个 linux 命令。然而,这似乎是我编写脚本的方式,python 正在执行某种执行并忘记而不是在开始第 2 步之前等待第 1 步完成。

举个例子,我正在尝试:

  1. 执行 SQL 命令,将结果写入/tmp 中的文件远程服务器。
  2. 使用完文件后,我想删除远程文件,以免空间不足。

发生的事情是 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,它应该阻塞直到进程完成。

关于python - 如何在顺序很重要的 python 脚本中运行多个 linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29134097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com