Seite 1 von 1

Subprocess

Verfasst: Donnerstag 3. September 2015, 20:00
von Flo89
Hallo Leute,

ich bin neu hier im Forum und habe folgendes Problem:
Das hier ist mein Code.

from subprocess import *

# Links to Tools
open_mafft = "C:/Users/Public/Desktop/Cygwin64 Terminal.lnk"


# Opens up the Tool
p = Popen([open_mafft,"mafft C:/Users/Florian/Desktop/ortholog_group_ABAYE3633.fasta > C:/Users/Florian/Desktop/ortholog_group_ABAYE3633.fa"], shell=True)
print (p.returncode)


Wenn ich das Programm über dieses Python Skript ausführe, gibt es die Fehlermeldung, das die Datei nicht gefunden wurde ( "Failed to run -: No such file or directory")

Komischerweise habe ich die Pfade mehrfach überprüft ! Wenn ich das Programm manuell start mit

mafft C:/Users/Florian/Desktop/ortholog_group_ABAYE3633.fasta > C:/Users/Florian/Desktop/ortholog_group_ABAYE3633.fa

starte funktioniert alles einwandfrei.

Habt ihr Idee woran das liegen könnte ?

Flo

Re: Subprocess

Verfasst: Donnerstag 3. September 2015, 21:55
von sparrow
Naja, das ist irgendwie nicht das Selbe.

Subprocess.Popen übergibst du einen einen Pfad zu einer lnk-Datei als ersten Parameter, bei dem manuellen Start nicht.

Ich weiß gar nicht ob das mit dem Aufruf von .lnk Dateien überhaupt klappt. Ersetz das mal durch den Pfad zu cygwin.

Dann: Wo hast du denn die manuelle Eingabe versucht? Windows Eingabeaufforderung oder Cygwin?

Re: Subprocess

Verfasst: Freitag 4. September 2015, 07:28
von Flo89
Hi,

danke für deine Antwort.
Ich hab das manuell probiert mit Cygwin.

Re: Subprocess

Verfasst: Freitag 4. September 2015, 07:39
von Sirius3
Wahrscheinlich faßt Cygwin "mafft C:/Users/Florian/Desktop/ortholog_group_ABAYE3633.fasta > C:/Users/Florian/Desktop/ortholog_group_ABAYE3633.fa" als Dateinamen auf.

Richtig wäre ja:

Code: Alles auswählen

with open("C:/Users/Florian/Desktop/ortholog_group_ABAYE3633.fa", "wb") as out:
    p = Popen([open_mafft, "mafft", "C:/Users/Florian/Desktop/ortholog_group_ABAYE3633.fasta"], stdout=out)
    p.wait()
    print (p.returncode)
Aber das dürfte wahrscheinlich nicht funktionieren, weil Cygwin ein eigenes Fensterchen öffnet, und damit stdout nicht umleitbar ist. Bleibt, die Zeile in ein Shell-Skript zu schreiben und dieses zu starten.

Re: Subprocess

Verfasst: Freitag 4. September 2015, 07:53
von Flo89
Ja, da hast du recht. Das geht leider nicht.

Wenn ich das Programm starte öffnet sich Cygwin in seiner eigenen Shell.