2014-06-02 6 views
0

Я хотел бы использовать sed или tr внутри скрипта python, чтобы ввести идентификатор в файле fastafile.использовать sed с переменными в скрипте python, используя подпроцесс

Я пробовал это, но это говорит SyntaxError:

subprocess.call(['sed\'s/>/>'+identifier+'/g\' <'+path+'>transcriptome')],shell=True)

где идентификатор и пути являются переменными. Он должен быть частью цикла, где для каждого идентификатора и введенного пути он должен изменить типичный формат fasta:> isotig123 to> IDisotig123. Каждый из них имеет соответствующий идентификатор.

Спасибо.

+0

Извините, вопрос в том, как я могу это сделать. –

+0

Попробуйте напечатать строку, которую вы кормите, чтобы позвонить, чтобы узнать, соответствует ли она тому, что вы думаете. Кроме того, знаете ли вы, что у Python есть модуль 're', который можно использовать для регулярного выражения и замены? –

ответ

0

Попробуйте

subprocess.call(['sed -e "s/>/>'+identifier+'/g" '+path+' >transcriptome')],shell=True) 
  • заменить \' на " вокруг SED действия
  • заменить < со ссылкой прямой файл
  • добавить -e использовать команду Действие

Предполагая, что идентификатор делает не содержат конкретных al char &, , / как в вашем образце

0

Между командой sed и ее аргументами отсутствует пробел. Попробуйте следующее:

subprocess.call(['sed \'s/>/>'+identifier+'/g\' <'+path+'>transcriptome')],shell=True) 
Смежные вопросы