如何用Python调用/运行软件?

2 投票
2 回答
1963 浏览
提问于 2025-04-16 23:48

我正在尝试写一个简单的脚本,让它一个接一个地执行不同的任务,但我不知道怎么用Python脚本来运行这个程序!我知道这应该很简单!但是我到处找都没找到。我的例子是这样的:

samtools merge filename.bam file1.sorted.bam file2.sorted.bam file3.sorted.bam file4.sorted.bam

samtools index filename.bam 
samtools idxstats filename.bam > filename.txt 
samtools pileup -vcf path/filename.fa filename_sorted.bam

我希望Python先运行第一个命令,等它完成后再执行下一个!重要的是,它必须等到前一个任务完成后再开始下一个!

2 个回答

3

使用 subprocess模块。页面底部有很多示例可以参考。

5

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会按照我们的要求去做事情。

比如说,你可能想要在用户输入一个数字时,程序才进行计算。如果用户输入的不是数字,程序就应该告诉他“请重新输入一个数字”。这就是条件判断的作用。

条件判断通常用“如果...那么...”的结构来表示。比如:如果用户输入的是数字,那么就进行计算;否则,就提示用户输入错误。

通过这种方式,我们可以让程序更加智能,能够根据不同的情况做出不同的反应。

from subprocess import call # call runs an external program and waits for it to quit

for command in ("samtools merge filename.bam file1.sorted.bam file2.sorted.bam file3.sorted.bam file4.sorted.bam", 
                "samtools index filename.bam", 
                "samtools idxstats filename.bam > filename.txt", 
                "samtools pileup -vcf path/filename.fa filename_sorted.bam"):
    # shell=True is so you can handle redirects like in the 3rd command
    call(command, shell=True) 

撰写回答