CoDeSys in Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

zedream hat geschrieben:Also ich habe es schon hingekriegt. Ich danke euch allen :D 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 ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
zedream
User
Beiträge: 11
Registriert: Donnerstag 12. Januar 2012, 14:36

Also für diejenigen die Interesse daran haben, hier ist das Skript :P:

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)
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Du hast immer noch beide Funktionen, obwohl sie genau dasselbe tun. Außerdem macht es keinen Sinn den Parameter "codesys" zu nennen.
BlackJack

Der Name der Funktion ist auch falsch denn da läuft kein Prozess ab.
zedream
User
Beiträge: 11
Registriert: Donnerstag 12. Januar 2012, 14:36

@nomnom: ich soll 2 Funktionen haben. So will der Auftraggeber :wink: und er will auch, dass der Parameter codesys heisst :K

@BlackJack: du hast recht :roll: das habe ich schon geändert.
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.
Benutzeravatar
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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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)
:twisted:
the more they change the more they stay the same
Antworten