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
Subprocess
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?
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?
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:
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.
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)