Python3 Как мне выполнить эту сложную команду оболочки - PullRequest
0 голосов
/ 21 мая 2018

Я хотел бы выполнить эту команду оболочки через python, я пытался использовать

shell="ls *R1.fastq.gz|while read a; do b=${a%R1.fastq.gz}R2.fastq.gz; c=${a%R1.fastq.gz}R1.out.fq; d=${a%R1.fastq.gz}R2.out.fq; e=${a%R1.fastq.gz}.s.fq; echo "sickle pe -t sanger -f $a -r $b -o $c -p $d -s $e"; done >SICKLE.sh"

system.os(shell)

Но получить SythaxError: InvalidSyntax Я делаю некоторые исследования, может быть, я должен использовать subprocces?но я новичок в этом, можем ли мы помочь мне?

1 Ответ

0 голосов
/ 21 мая 2018

escape цитаты (добавьте \ перед цитатами в вашей строке)

shell="*R1.fastq.gz|while read a; do b=${a%R1.fastq.gz}R2.fastq.gz; c=${a%R1.fastq.gz}R1.out.fq; d=${a%R1.fastq.gz}R2.out.fq; e=${a%R1.fastq.gz}.s.fq; echo \"sickle pe -t sanger -f $a -r $b -o $c -p $d -s $e\"; done >SICKLE.sh"

subprocess.call:

import subprocess
subprocess.call(["ls", shell])
...