Если ваш входной файл на самом деле является файлом (именно так он и выглядит в вашем примере), а не передал данные из какого-либо другого процесса, я не думаю, что вам вообще следует использовать STDIN в функции subprocess.call!
И, насколько я знаю, вы не можете предоставить индекс через STDIN обычному боути из командной строки - это должен быть файл.Так что это определенно должен быть нормальный аргумент, а не из STDIN.
Так я обычно называю bowtie из скрипта (и входной файл, и индекс как файлы, без STDIN):
subprocess.call(["bowtie %s %s %s %s"(full_options,indexname,infile,outfile)],
shell=True)
Где full_options
- это что-то вроде '-f -m1 -v1 --best --tryhard -S --sam-nosq'
, а indexname
- что-то вроде 'Chlre4nm_cassette_new_m'
(которое является базовым именем набора именованных имен файлов вида Chlre4nm_cassette_new_m. *. Ebwt, в каталогезадается переменной среды оболочки $BOWTIE_INDEXES
, то есть, как bowtie обнаруживает свои индексные файлы).
Я понимаю, что, вероятно, я плохо использую subprocess.call и должен разбить мои команды / options / args на список, подобныйв другом ответе - это старый код, но он работает.