1

我有一个包含文件名列表的文件:

列表:

Sample1_R1_L1.bam
Sample1_R2_L1.bam
Sample2_R1_L1.bam
Sample2_R2_L1.bam

…………

我想运行一个合并每对文件的unix命令:

$samtools merge Sample1_merged_output.bam Sample1_R1_L1.bam Sample1_R2_L1.bam

我在想我可以通过使用python中的for循环来实现这一点,它从文件名列表中获取两个元素并运行“子进程”来调用unix命令。我发现一篇文章有​​助于一次访问两个元素,但我无法将文件名传递给 unix shell:

for i,d in enumerate(list):
    if i < (len(list) - 1):
        print d + ' ' + list[i+1]
        # print d + ' ' + list[i+1]

欢迎提出任何实现这一目标的建议。谢谢。

4

1 回答 1

0

您应该使用argv来获取参数。

from sys import argv
print argv[1]

结果将是:

merge

那么您的代码将类似于:

list2merge = argv[2:]
for i,d in enumerate(list2merge):
    print str(i) + ' ' + str(d)

更新

您不应该使用 list 作为变量名,因为它是保留的。

于 2013-11-07T06:52:23.583 回答