Seite 2 von 2
Re: CoDeSys in Python
Verfasst: Mittwoch 18. Januar 2012, 09:17
von Hyperion
zedream hat geschrieben:Also ich habe es schon hingekriegt. Ich danke euch allen

Wenn ihr interesse habt, kann ich mal mein Skript posten.
Die Frage ist eher, ob Du Interesse daran hast - die beiden Funktionen oben zeigen mir, dass Du Interesse haben solltest; Dein Posting hier zeigt mir, dass Du es eher nicht hast

Re: CoDeSys in Python
Verfasst: Mittwoch 18. Januar 2012, 16:26
von zedream
Also für diejenigen die Interesse daran haben, hier ist das Skript

:
Code: Alles auswählen
import os, subprocess
def runProcess(CoDeSys):
for root, dirs, files in os.walk('C:\\'):
if CoDeSys in files:
return (os.path.abspath(os.path.join(root, CoDeSys)))
def PythonScript(ExportScript):
for root, dirs, files in os.walk('\\'):
if ExportScript in files:
return(os.path.abspath(os.path.join(root, ExportScript)))
codesys = runProcess("CoDeSys.exe")
exportscript = PythonScript("ExportScript.py")
commandline = '"%s" --Profile="CoDeSys V3.4 SP4 Patch 1" --runscript="%s"' % (codesys, exportscript)
subprocess.call(commandline)
Re: CoDeSys in Python
Verfasst: Mittwoch 18. Januar 2012, 16:40
von nomnom
Du hast immer noch beide Funktionen, obwohl sie genau dasselbe tun. Außerdem macht es keinen Sinn den Parameter "codesys" zu nennen.
Re: CoDeSys in Python
Verfasst: Mittwoch 18. Januar 2012, 17:07
von BlackJack
Der Name der Funktion ist auch falsch denn da läuft kein Prozess ab.
Re: CoDeSys in Python
Verfasst: Donnerstag 19. Januar 2012, 09:30
von zedream
@nomnom: ich soll 2 Funktionen haben. So will der Auftraggeber

und er will auch, dass der Parameter codesys heisst :K
@BlackJack: du hast recht

das habe ich schon geändert.
Re: CoDeSys in Python
Verfasst: Donnerstag 19. Januar 2012, 09:48
von BlackJack
@zedream: Die Wünsche von Auftraggebern in allen Ehren, aber wenn sie objektiv gesehen *zu* unsinnig werden, setzt man sich halt mit einer fundierten Begründung darüber hinweg. Ich würde da maximal die *eine* Funktion an einen weiteren Namen binden.
``return`` ist übrigens keine Funktion, darum sollte man auch kleine Klammern um das machen was kein Argument ist. Oder anders ausgedrück, nach dem Schlüsselwort ``return`` steht ein Ausdruck, und Klammern um einen Ausdruck sind unnötig wenn man damit keine Auswertungsreihenfolge erzwingen muss.
Re: CoDeSys in Python
Verfasst: Donnerstag 19. Januar 2012, 09:55
von Hyperion
Ich frage mich ja auch noch, wieso man bei jedem Start den Rechner nach diesen Dateien durchsuchen muss... wieso macht man das nicht nur bei Bedarf? Hatte ich ja schon mal vorgeschlagen: Eine INI-Datei mit den Pfaden in einem Standard-Verzeichnis ablegen, wenn diese (noch) nicht vorhanden ist - oder die Pfade nicht stimmen - dann scannt man eben neu.
@zedream: Dir ist aber mittlerweile klar, dass Deine zwei Funktionen identisch sind, wenn man von der Benennung absieht? Das kann doch *niemals* wirklich der Wunsch eines Auftraggebers sein -> Redundanz -> mehr Fehlerpotenzial, schwerere Wartbarkeit, usw.
Re: CoDeSys in Python
Verfasst: Donnerstag 19. Januar 2012, 18:16
von Dav1d
Code: Alles auswählen
import os, subprocess
def find(CoDeSys):
for root, dirs, files in os.walk('C:\\'):
if CoDeSys in files:
return (os.path.abspath(os.path.join(root, CoDeSys)))
PythonScript = find
codesys = find("CoDeSys.exe")
exportscript = PythonScript("ExportScript.py")
commandline = '"%s" --Profile="CoDeSys V3.4 SP4 Patch 1" --runscript="%s"' % (codesys, exportscript)
subprocess.call(commandline)
