Ich arbeite unter anderem mit Gaussian, einem Programm zur Optimierung der molekularen Geometrie. Gauß kann Tage dauern, um eine einzelne Optimierung zu beenden, also habe ich beschlossen, ein Programm auf Python zu machen, um mir eine E-Mail zu senden, wenn es fertig ist. Die E-Mail-Sendung habe ich herausgefunden. Das Problem besteht darin, dass Gaussian automatisch eine Protokolldatei und eine CHK-Datei generiert, die die tatsächlichen Ergebnisse des Prozesses enthält, und unter Verwendung von subprocess.call(['command'], shell=False)
werden beide Dateien nicht generiert.Wie bekomme ich die Protokolldatei, die ein Programm erstellt, wenn es mit subprocess.call() ausgeführt wird?
Ich habe auch versucht, das Problem mit os.system(command)
zu lösen, die mir die .log-Datei und die .chk-Datei gibt, aber die E-Mail wird gesendet, ohne auf den Abschluss der Optimierung warten.
Eine weitere wichtige Sache, ich habe den gesamten Prozess im Hintergrund laufen zu lassen, weil, wie ich am Anfang sagte, es Tage dauern könnte vorbei zu sein, und ich kann das Terminal öffnen, dass lange nicht verlassen.
das Terminal geöffnet verlassen kann mit 'screen' erreicht werden. Sie müssen die generierten Dateien von der Festplatte lesen und sie in Ihre Berichts-E-Mail einfügen. Die Generierung von Protokolldateien ist unabhängig von der aufrufenden Methode. – Paebbels
Nun, ich habe es geschafft, das Problem zu lösen, ich habe nach der Antwort gesucht und mein Fehler war ziemlich offensichtlich. Um Gaussian auf dem Terminal zu verwenden, benutze ich '$ g09 input.com &', also läuft es in bg. Das war der Befehl, den ich in 'subprocess.call (['command'] 'und' os.system (command) '') benutzt habe. Das Problem war das '&', irgendwie' os.system() 'doesn ' t warten, bis der Prozess damit zu beenden. Durch den Verzicht auf '&', es hat geklappt. (Immer noch nicht 'subprocess.call verwenden kann()') –