Ich habe ein peinliches Problem mit dem Subprocess.call-Operator in Python für ein Skript. Ich muss ein Pipeline-Programm (bowtie) mehrmals ausführen und dann die Ausgabe auf verschiedene Arten verwenden. Zu diesem Zweck benutze ich die subprocess.call.Multpile stdin mit subprocess.call in Python (für Bowtie)
Problem ist, dass bowtie Eingabe 2 Dateien, ein Index und eine Textdatei nimmt, und ich kann nicht beide von ihnen dem stdin Parameter zuweisen.
Ich habe auch versucht, den Pfad zum Index in den Argumenten aufzunehmen, aber natürlich erkennt Bowtie es nicht als Index und gibt mir einen Fehler. Da dieser Index immer derselbe ist, gibt es eine Möglichkeit, dieses Problem zu vermeiden?
Hier ist ein Teil des Codes i auf (sehr roh) gerade arbeite:
inpath = "/media/2tbhd/workdata/nanocage_noadapt/zf/fasta/zf_ad_c_r2.fasta"
ind_path = "indexes/zf_gen_topl"
for elem in plist:
cmd = subprocess.call(["bowtie","-f","-v 3", "--best" "--suppress 6,7" "-p 6"], shell = True, stdin = inpath, ind_path)
Wie würden Sie 'bowtie' von der Befehlszeile aufrufen? Du kannst in keiner mir bekannten Programmiersprache zwei Dateien stdin zuweisen ... – mgilson
"aber natürlich erkennt bowtie es nicht als Index und gibt mir einen Fehler" - welche Fehlermeldung gibt es konkret? –
Bitte versuchen Sie, einen einfachen Shell-Befehl zu schreiben, der bowtie aufruft, wie Sie es wollen, und sehen Sie, ob es funktioniert. Wenn es funktioniert, fügen Sie es hier ein und es wird Ihnen leichter helfen, wie es in eine subprocess.call-Funktion umgewandelt wird. Wenn es nicht funktioniert, kann ich versuchen herauszufinden, was du falsch mit Fliege gemacht hast. – weronika