在Python中的for循环内顺序执行bash命令
我试图在Python中以for循环顺序运行2个bash命令。循环如下所示:在Python中的for循环内顺序执行bash命令,python,bash,Python,Bash,我试图在Python中以for循环顺序运行2个bash命令。循环如下所示: for dataset in data: subprocess.call("cd " +dataset+'.matrix',shell=True) subprocess.call("cat part-r-* > combined_output", shell=True) 然而,通过这种方式,每个命令都被认为是相互独立的。我需要他们一个接一个地执行。我不知道如何很好地使用子流程模块(
for dataset in data:
subprocess.call("cd " +dataset+'.matrix',shell=True)
subprocess.call("cat part-r-* > combined_output", shell=True)
然而,通过这种方式,每个命令都被认为是相互独立的。我需要他们一个接一个地执行。我不知道如何很好地使用子流程模块(我也尝试过使用os.system)。我在网上查阅了一些文档,但它们并不是很有用。在此方面的任何帮助都将不胜感激。提前谢谢 操作系统的示例:
import os
os.system("echo aaa > ~/SOMEFILE1111; cd ~/; cat SOMEFILE1111; rm SOMEFILE1111")
和一个带有子流程调用的
import subprocess
cmds = [ "echo aaa > ~/SOMEFILE1111", "cd ~/",
"cat SOMEFILE1111", "rm SOMEFILE1111"]
subprocess.call(";".join(cmds), shell=True)
os.system
的示例:
import os
os.system("echo aaa > ~/SOMEFILE1111; cd ~/; cat SOMEFILE1111; rm SOMEFILE1111")
和一个带有子流程调用的
import subprocess
cmds = [ "echo aaa > ~/SOMEFILE1111", "cd ~/",
"cat SOMEFILE1111", "rm SOMEFILE1111"]
subprocess.call(";".join(cmds), shell=True)
os.system
的示例:
import os
os.system("echo aaa > ~/SOMEFILE1111; cd ~/; cat SOMEFILE1111; rm SOMEFILE1111")
和一个带有子流程调用的
import subprocess
cmds = [ "echo aaa > ~/SOMEFILE1111", "cd ~/",
"cat SOMEFILE1111", "rm SOMEFILE1111"]
subprocess.call(";".join(cmds), shell=True)
os.system
的示例:
import os
os.system("echo aaa > ~/SOMEFILE1111; cd ~/; cat SOMEFILE1111; rm SOMEFILE1111")
和一个带有子流程调用的
import subprocess
cmds = [ "echo aaa > ~/SOMEFILE1111", "cd ~/",
"cat SOMEFILE1111", "rm SOMEFILE1111"]
subprocess.call(";".join(cmds), shell=True)
我不相信它们是异步(同时)运行的,只是它们位于不同的子进程中,每个子进程都继承父进程的工作目录。因此,它正在等待cd
完成,但是拥有cd
的子流程随后消失
谢天谢地,在这种情况下,您可以告诉呼叫在另一个目录中使用,这样您就不需要cd
:
for dataset in data:
subprocess.call("cat part-r-* > combined_output",shell=True,cwd=dataset+'.matrix')
我不相信它们是异步(同时)运行的,只是它们位于不同的子进程中,每个子进程都继承父进程的工作目录。因此,它正在等待cd
完成,但是拥有cd
的子流程随后消失
谢天谢地,在这种情况下,您可以告诉呼叫在另一个目录中使用,这样您就不需要cd
:
for dataset in data:
subprocess.call("cat part-r-* > combined_output",shell=True,cwd=dataset+'.matrix')
我不相信它们是异步(同时)运行的,只是它们位于不同的子进程中,每个子进程都继承父进程的工作目录。因此,它正在等待cd
完成,但是拥有cd
的子流程随后消失
谢天谢地,在这种情况下,您可以告诉呼叫在另一个目录中使用,这样您就不需要cd
:
for dataset in data:
subprocess.call("cat part-r-* > combined_output",shell=True,cwd=dataset+'.matrix')
我不相信它们是异步(同时)运行的,只是它们位于不同的子进程中,每个子进程都继承父进程的工作目录。因此,它正在等待cd
完成,但是拥有cd
的子流程随后消失
谢天谢地,在这种情况下,您可以告诉呼叫在另一个目录中使用,这样您就不需要cd
:
for dataset in data:
subprocess.call("cat part-r-* > combined_output",shell=True,cwd=dataset+'.matrix')
如果我这样写可以吗:os.system(“cd”+dataset+'.matrix';“cat part-r-*>组合输出”)应该是这样的:“cd”+dataset+'.matrix;cat-part-r-*>组合输出“
如果我这样写可以吗:os.system(“cd”+dataset+'.matrix“;“cat-part-r-*>组合输出”)应该是这样的:“cd”+dataset+'.matrix;cat-part-r-*>组合输出“
如果我这样写可以吗:os.system(“cd”+dataset+'.matrix“;“cat-part-r-*>组合输出”)应该是这样的:“cd”+dataset+'.matrix;cat-part-r-*>组合输出“
如果我这样写可以吗:os.system(“cd”+dataset+'.matrix“;“cat-part-r-*>组合输出”)应该是这样的:“cd”+dataset+'.matrix;cat零件r-*>组合输出'