2013-11-07 2 views
1

У меня есть файл, который содержит список filesnames:Отправка два элемента из списка в Python команды Unix оболочки

Список:

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

Я думал, что могу добиться этого, используя цикл for в python, который берет два элемента из списка имен файлов и запускает «подпроцесс» для вызова команды unix. Я нашел пост, который помог открыть два элемента в то время, но я не могу передать имена файлов в оболочку UNIX:

for i,d in enumerate(list): 
    if i < (len(list) - 1): 
     print d + ' ' + list[i+1] 
     # print d + ' ' + list[i+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) 

UPDATE

Вы не должны использовать список в качестве имени переменной, так как он зарезервирован.

Смежные вопросы