在Python中的for循环内顺序执行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) 然而,通过这种方式,每个命令都被认为是相互独立的。我需要他们一个接一个地执行。我不知道如何很好地使用子流程模块(

我试图在Python中以for循环顺序运行2个bash命令。循环如下所示:

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-*>组合输出'