CoDeSys in Python
@Hyperion: danke für dein Tipp.
Jetzt habe ich 2 Funktionen; die erste sucht nach CoDeSys.exe und die zweite sucht nach einem anderen Python-Skript. Die zwei Funktionen:Das zweite Skript hat die Aufgabe, ein CoDeSys-Projekt zu öffnen und dies als XML-Datei zu exportieren aber erst wenn CoDeSys schon offen ist (Das Projekt kann von außen nicht exportiert werden). Bisher habe ich das mit dem folgenden Skript gemacht CoDeSys wird aufgerufen und CoDeSys ruft das andere Skript Export.py innerhalb der CoDeSys-Umgebung. Nun versuche ich das mit den Funktionen zu machen, da ich den Pfad nicht so eingeben darf. Ich habe versucht die Funktionen nacheinander aufzurufen aber das geht logischerweise nicht
Hat jemand eine Idee?
Jetzt habe ich 2 Funktionen; die erste sucht nach CoDeSys.exe und die zweite sucht nach einem anderen Python-Skript. Die zwei Funktionen:
Code: Alles auswählen
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('D:\\'):
if ExportScript in files:
return ((os.path.abspath(os.path.join(root, ExportScript))))
Code: Alles auswählen
subprocess.call(r'"C:\Program Files (x86)\3S CoDeSys\CoDeSys\Common\CoDeSys.exe" --Profile="CoDeSys V3.4 SP4 Patch 1" --runscript="D:\------\Python32\Export.py"')
Hat jemand eine Idee?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Na, also so solltest Du das nicht umsetzen...zedream hat geschrieben:@Hyperion: danke für dein Tipp.
Ähem... schau Dir doch mal bitte die beiden Funktionen an, und dann beschreibe mit mal den Unterschied. (und nein, ich meine nicht das überflüssige Klammerpaar in der zweiten Funktion!)zedream hat geschrieben: Jetzt habe ich 2 Funktionen; die erste sucht nach CoDeSys.exe und die zweite sucht nach einem anderen Python-Skript.Code: Alles auswählen
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('D:\\'): if ExportScript in files: return ((os.path.abspath(os.path.join(root, ExportScript))))
Was für ein zweites Script? Was ist denn das erste?zedream hat geschrieben: Das zweite Skript hat die Aufgabe, ein CoDeSys-Projekt zu öffnen
Den ganzen Rest habe ich nicht verstanden ehrlich gesagt. Ich habe keine Ahnung, wie dieses CoDeSys funzt, was es macht und wie da Deine Scripte reinspielen. Vielleicht haben ja andere mehr kapiert
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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 hastzedream hat geschrieben:Also ich habe es schon hingekriegt. Ich danke euch allen Wenn ihr interesse habt, kann ich mal mein Skript posten.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
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)
@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.
``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.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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.
@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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
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)
the more they change the more they stay the same