Wir erstellen ein Addon (simples Tutorial von Anfang bis Ende)

  • Und man muss fuenfzigccm auch mal fragen ob er jetzt auch so weit ist!

    Bei mir ist alles klar und ich bin soweit.
    Ich hab schon verstanden, worum es bei der eigentlichen Idee der Suche ging.
    Meine war eher wie "Auf Gut Glück" bei Google zu verstehen. Das erste was passt, wird genommen.
    Problematisch, war nur meine if- Abfrage, aber die wurde ja von Bulvai geklärt.

    lg fuenfzigccm

  • Bei mir ist alles klar und ich bin soweit.Ich hab schon verstanden, worum es bei der eigentlichen Idee der Suche ging.
    Meine war eher wie "Auf Gut Glück" bei Google zu verstehen. Das erste was passt, wird genommen.
    Problematisch, war nur meine if- Abfrage, aber die wurde ja von Bulvai geklärt.

    lg fuenfzigccm

    das angesehen?

    Was funktioniert bei result in einer Funktion, was bei einer anderen List nicht funktioniert?


    Gruß Jan

  • @skatulskijean
    ich versuche das noch etwas zu verändern leider noch nicht so wie ich mir eine such Funktion suche vorstelle.
    Haben ja jetzt einige Beispiele aktuell habe ich das versucht:

    Möchte da eigentlich noch was austesten.

  • @Dima

    was versuchst du denn?
    Es sieht für mich so aus als ob du kopierst aber nicht verstehst.
    Was soll if len(suchen(search,daten)) == 0:?

    Gruß Jan

    PS
    In einer Funktion kannst Du mit Return arbeiten.
    Wir wollen später Funktionen nutzen um z.B Werte mit Return an andere Funktionen zu übergeben!

  • @Dima

    Das würde Eingeschränkt funktionieren.
    Eingeschränkt meine ich da nur das erste Ergebnis mit return übergeben würde.

  • @Dima
    und so funktioniert es komplett!

  • Frage von Jan:

    Spoiler anzeigen

    .
    .
    .
    result[] #erstellt erstmal eine leere Liste mit dem Namen result,
    for name in Liste: #funktion erstellen
    if ((name.upper()).find(str.upper(search))>=0): # der vergleich
    result.append(name) #schreibe den übereinstimmenden Namen ans Ende der liste von result,
    else
    pass #mach nichts, sprich die Liste result bleibt wie sie vor dem durchlauf war
    .
    .

    Hoffe ich habe die Frage richtig beantwortet ;)

  • [h1]Das os Modul[/h1]

    Das os Modul bietet zahlreiche Möglichkeiten um mit Dateien ,Pfaden und Verzeichnissen zu Arbeiten.
    Wenn möglich sollte man auf die Funktionen dieses Moduls zur Datei,Verzeichnis oder Pfad Manipulationen zurückgreifen.
    Diese Module sind Wrapper für plattformspezifischen Module , so das diese Funktionen unter UNIX, Windows , Mac OS, und jeder andere Plattform die von Python unterstützt wird funktionieren.


    Funktionen zur Bearbeitung von Verzeichnissen und Dateien:


    os.getcwd() Liefert einen String mit dem aktuellen Arbeitsverzeichnis zurück.

    Beispiel :

    Python
    import os
    
    
    home=os.getcwd()
    print home


    os.listdir(path) Liefert eine Liste des Inhaltes (Dateinamen, Unterverzeichnisse usw.) des Verzeichnisses path.

    Beispiel:

    Python
    import os
    
    
    home=os.getcwd()
    print os.listdir(home)


    os.mkdir(path) legt ein neues Verzeichnis an:


    Beispiel:

    legt ein neues Directory mit Namen Test im aktuellen Verzeichnis an.


    Python
    import os
    os.mkdir('Test')


    os.rename(old,new) Benennt ein Verzeichnis oder eine Datei um.

    Beispiel:


    Python
    os.rename('Test','Pythontest')

    os.rmdir(path) löscht ein Verzeichnis wenn es leer ist.

    Beispiel:
    löscht das im vorherigen Beispiel unbenannte Verzeichnis 'Pythontest.

    Python
    import os
    os.rmdir('Pythontest')

    os.chdir(path) wechselt das Arbeitsverzeichnis

    Zum zusammensetzen von Pfadteilen benutzen wir `os.path.join() um das ganze multi-platform laufbar zu machen
    benutzen wir os.sep um den Seperator zu erstellen.

    Beispiel:


    Python
    import os
    import os.path
    new=os.path.join(os.sep,'Programme')
    os.chdir(new)
    home=(os.getcwd())
    print home


    os.path

    os.path bietet Methoden , um an Informationen von Pfad und Dateinamen zu kommen.
    hier kümmern wir uns auch nur um einige:


    os.path.curdirgibt das aktuelle Verzeichnis aus
    os.path.isdir(dir)gibt True zurück wenn das Verzeichnis vorhanden ist
    os.path.isfile(file)gibt True zurück wenn die Datei vorhanden ist
    os.path.getsize(filename)gibt die Größe einer Datei aus ohne sie zu öffnen.
    os.path.abspath(file)gibt den absoluten Pfad einer Datei aus


    Splitten von Pfad:

    Um den Base Namen eines Pfades ( letzte Komponente ) zu bekommen
    benutzen wir os.path.basename()

    Beispiel:

    import os
    print os.path.basename("/home/user/temp.txt")
    >>>temp.txt

    Um den Verzeichnis Namen eines Pfades zu bekommen, benutzen wir os.path.dirname():

    Beispiel:

    import os
    print os.path.dirname("/home/user/temp.txt")
    >>>/home/user


    Aufgaben:

    Erstellt einen Script der folgendes tut:

    1.Prüft euer aktuelles Arbeits Verzeichnis
    2.Legt eine neues Verzeichnis an.
    3.Prüft ob das Verzeichnis vorhanden ist.
    4.Wechselt in das neue Verzeichnis
    5.Erstellt eine Textdatei in diesem Verzeichnis und beschreibt sie.
    6.öffnet die Textdatei und lest den Inhalt (nicht vegessen zu schließen)
    7.benennt die Textdatei um.
    8.Erstellt eine andere Textdatei im selben Verzeichnis.
    9.Listet das Verzeichnis in dem sich die Textdatei befindet(in einer for Schleife)
    10.Listet nur eine der beiden Textdateien
    11.Gebt die Größe der Textdateien aus.
    12.löscht die erstellten Textdateien und das erstellte Verzeichnis.

    Wenn das alles im Script funktioniert hat versucht Funktionen für die einzelnen Aufgaben zu erstellen und diese im Script zu benutzen.

  • @skatulskijean
    Und so habe ich das nun gelöst geht im vollen Umfang!

    Fange Heute mit dem aktuellen Teil an mal schauen wie weit ich Heute komme!

  • Hab die Übungen soweit schon durch, morgen werde ich dann noch ein paar Funktionen daraus basteln.

    Das einzige Problem war in Übung 12:

    Erst lösche ich die 2 Dateien im Verzeichnis da ich dieses nur löschen kann wenn es leer ist mit:

    for name in os.listdir(home):
    os.remove(name)

    Danach möchte ich ins übergeordnete Verzeichnis mit os.chdir(Path) wechseln um das Verzeichnis auch löschen zu können:
    >>> Wie das geht habe ich bisher nicht rausgefunden.
    >>> Absoluter Pfad funktioniert natürlich (ist aber nicht der Sinn der Sache)

  • Seperator

    Was bedeutet das???


    Python
    import os
    import os.path
    new=os.path.join(os.sep,'Programme')
    os.chdir(new)
    home=(os.getcwd())
    print home
    Code
    Traceback (most recent call last):
      File "Test.py", line 4, in <module>
        os.chdir(new)
    OSError: [Errno 2] No such file or directory: '/Programme'

    Da bekomme ich eine Fehler Meldung! Ist das weil ich Linux habe und kein Win?


    Python
    import os.path
    print os.path.curdir

    Ich bekomme nur ein Punkt wieso?

  • Was bedeutet das???
    Sorry falsch geschrieben .
    Separator =Begrenzung (in diesem Fall des path ) z.b \ oder / oder \\

    Python
    import os
    import os.path
    new=os.path.join(os.sep,'Programme')
    os.chdir(new)
    home=(os.getcwd())
    print home
    Code
    Traceback (most recent call last):
      File "Test.py", line 4, in <module>
        os.chdir(new)
    OSError: [Errno 2] No such file or directory: '/Programme'

    Da bekomme ich eine Fehler Meldung! Ist das weil ich Linux habe und kein Win?

    Ja Windows , aber nur der Path 'Programme' =c:\Programme

    Python
    import os.path
    print os.path.curdir

    Ich bekomme nur ein Punkt wieso?

    Es ist richtig das Du nur einen Punkt erhältst .
    Denn unter Deinem OS wird dieses Zeichen genutzt unter anderen z.B Riscos wird nicht der Punkt verwendet sondern @ unter dem Alten MacOS :.
    So ist es eine Möglichkeit MultiOS Code zu schreiben.

  • Zitat von skatulskijean


    Da bekomme ich eine Fehler Meldung! Ist das weil ich Linux habe und kein Win?

    Ja Windows , aber nur der Path 'Programme' =c:\Programme

    Das soll doch Multi OS sein sollte ich dann nicht so was wie /usr/lib bekommen?

  • wenn du einer Variablen den Wert(oder in diesem Fall einen Befehl zuweist) kannst du später die Variable nutzen (Sie hält das Ergebnis)
    Gruß Jan

    Die Idee kam mir auch schon,aber man muss doch auch irgendwie ganz einfach ins Parent Directory springen können.
    os.chdir(..) funktioniert z.B.nicht.
    os.chdir(..\path) auch nicht.....

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!