Beiträge von noisefloor

    Hallo,

    ` rrdtool update test.rrd N :27` mag ein valider Befehl für die Shell sein, aber definitiv nicht für Python. Schon allein deshalb nicht, weil nach dem Aufruf einer Funktion immer Klammern kommen. Darin stehen dann die Argumente (oder nichts, wenn die Funktion keine Argumente hat).

    Zitat

    Habe alle(?) Varianten ausprobiert.


    Programmieren ist nicht raten...

    Ohne rrdtool zu kennen, würde ich mal sagen, dass der Befehl ` rrdtool.update('test.rrd', 'N :27')` lautet. Ob du für `test.rrd` noch den vollen Pfad mit angeben musst oder nicht hängt davon ab, wo die Datei `test.rrd` relativ zum Python-Skript liegt. Da du sagst im gleichen Verzeichnis, ist eine Angabe des Pfads wohl nicht notwendig.

    Gruß, noisefloor

    Hallo,

    Zitat

    Ich habe diese Dateien ebenfalls in einem deb-package vor mir liegen. Soll ich mal versuchen es per sudo dpkg -i zu installieren?


    Das sollte in diesem Fall gehen, weil das Paket wohl keine Abhängigkeiten hat, ABER:

    Schöner ist, die `non-free` Paketquelle deiner sources.list hinzufügen.
    Dazu die Datei mit einem Editor mit Root-Rechten öffnen und die Zeile

    deb http://ftp.de.debian.org/debian/ jessie non-free

    einfügen. Speichern, Paketquellen neu einlesen

    sudo apt-get update


    und dann via apt-get installieren.

    Bei Raspbian ist non-free übrigens per Default aktiviert, bei Debian offensichtlich nicht.

    Gruß, noisefloor

    [edit]Andreas war ein bisschen schneller :-)[/edit]

    Hallo,

    Zitat

    Das renomierte Buch Ernesti Kaiser Python 3 kommt...

    Zitat

    so viel zur Qualität von Literatur


    Die ersten Ausgaben dieses Buchs haben in der Python-Community einen legendär schlechten Ruf, weil da ziemlich viele Fehler drin sind und vor allem nicht-idomatisches Python drin gezeigt wird.

    Die neuste = 4. Ausgabe finde ich ganz ok, jedenfalls sind die allermeisten Fehler beseitigt.

    Gruß, noisefloor

    Hallo,

    Zitat

    Merke aber, das wird nicht so geliebt. Mit was macht ihr das Phyton, Webseiten ohne CGI? HWo finde ich Beispiele?


    Python mit CGI ist total altbacken und eigentlich verwendet das seit Jahren niemand mehr (auch, wenn es grundsätzlich noch funktioniert).

    Stand der Dinge seit Jahren bei Python ist WSGI (Web Standard Gateway Interface). Nacktes WSGI willst du aber nicht verwenden, sondern viel mehr ein Python Webframework, welches WSGI unterstützt (was quasi alle tun). Für kleine Sachen ist Bottle (http://www.bottlepy.org) sehr gut, weil kompakt und einfach. Und du brauchst auch keinen Apache & Co., weil für kleine Aufgaben zu Hause der eingebaute Server von Bottle völlig ausreicht.

    Gruß, noisefloor

    Hallo,

    dein 1. und 2. Beispiel haben einen entscheidenden Unterschied: im 2. verwendest du das `with` Statement, im ersten `open(...)`. Was das `with` macht, steht ja in meinem ersten Post. Und wenn du `with` verwendest, brauchst du auch kein `close`.

    Zitat

    Sorry wenn ich dir widerspreche, einfach am ende close aufrufen ist so nicht dokumentiert bei python csv , warum auch immer???


    Ganz einfach: weil alle Beispiele das `with` Statement verwenden und da braucht man kein ...

    Zitat

    Ich habs mal zum laufen gebracht sogar mit close, ich vermute es waren die doppelten Hochkommas im open Aufruf


    Programmieren != raten. Das mit den Hochkommas ist totaler Quatsch, weil single quotes und double quotes in Python absolut gleich verwendet werden können.

    Gruß, noisefloor

    Hallo,

    schließt du die Datei irgendwo noch? Im Codebeispiel fehlt ein `close`... Kann sein, dass der Inhalt darum im Puffer bleibt und nicht geschrieben wird. Oder besser direkt das `with` Statement nutzen, dann wird die Datei garantiert geschlossen.

    Abgesehen davon:

    Code
    for j in range(0, len(EdgesGf.list)):
                       Edge = EdgesGf.list[j]


    ist ein Anti-Pattern in Python. Du kannst direkt über `EdgesGf.list` iterieren, ohne den Umweg über den Index.

    Gruß, noisefloor

    Hallo,

    Zitat

    Wäre eigentlich so ran gegangen:


    Ja, aber programmieren ist nicht raten ;)

    Anstatt des `time` Moduls möchtest du vielleicht auch lieber das `datetime` Modul verwenden. Das ist "higher level" und damit i.d.R. angenehmer im Umgang. Doku: https://docs.python.org/3.4/library/datetime.html

    Zitat

    Desweiteren möchte ich in meinen If-Schleifen


    if ist keine Schleife, sondern ein Abfrage, siehe auch: http://www.if-schleife.de/
    (BTW: danke an __deets__ für den Link, die Seite ist gut :) )

    Zitat

    je Schleife eine neue Prozedur/Sub starten und dieses Ausführen


    Was meinst du damit genau? Du kannst ja, wenn die Bedingungen der if-Abfrage erfüllt ist, im dann ausgeführten Codeblock beliebig Funktionen oder Methode von Klassen aufrufen.

    Zitat

    die Schleife soll 24/7 laufen, wie gehe ich das an?


    [code=php]while True:
    ##hier steht der Code, der immer wieder ausgeführt wird
    ##weil `while Ture` immer wahr ist[/php]

    Gruß, noisefloor

    Hallo,

    grundsätzlich kann ja jeder posten und testen, wie er will - aber ich halte das hier auch für ziemlich nutzlos.

    Schon alleine deshalb, weil es ja ca. 1 Millionen Editoren gibt und mit drei noch nicht mal die Spitze des Eisbergs betrachtet wird. Außerdem wird in dem Vergleich ja auch die reine Lehre der Editoren ignoriert, aka VIM und EMACS :s

    Gruß, noisefloor

    Hallo,

    Zitat

    Das Problem haben viele, und so weit ich sehe, ist es unlösbar, jedenfalls helfen alle Ratschläge, die ich bisher im Netz gefunden habe, nichts, und auch alle Diskussionen zu diesem Thema führen ins Nichts.


    Also wenn ich nach `hfsplus linux` bei Google Sachen sagen die ersten Treffer, dass es geht. Zwar unter Ubuntu, aber dann sollte es unter Raspian auch gehen, WENN in den Raspian Quellen das Paket `hfsprogs` vorhanden ist.

    Wenn nicht, dann geht's wohl wirklich nicht.

    Gruß, noisefloor

    Hallo,

    grundsätzlich kann das, was gesucht wird, mit einem Generator erreicht werden:

    [code=php]from time import sleep

    def my_generator():
    a = 0
    while True:
    a = a + 1
    yield a

    for i in my_generator():
    print(i)
    sleep(1)[/php]

    Bleibt aber immer noch die Frage:

    Zitat

    Frage an Dich: Was genau möchtest du denn erreichen / was ist dein Ziel?

    Gruß, noisefloor

    Hallo,

    Zitat

    Allerdings weiß ich nicht, wie man das mit systemd macht? Kann ich da einen Tipp haben?


    Ja - einfach mal mit systemd beschäftigen ;)

    Im Wiki von ubuntuusers.de sind Timer Units IMHO gut erklärt: https://wiki.ubuntuusers.de/systemd/Timer%20Units/. Funktioniert unter Raspbian Jessie genau so.
    Kurzfassung: du schreibst und aktivierst eine Timer Unit, die dann periodisch eine Service Unit startet. Die Service Unit führt dann dein Python-Skript aus. Klingt vielleicht im ersten Moment kompliziert - ist es aber nicht :)

    Cron funktioniert natürlich auch, systemd ist aber der "modernere" Ansatz.

    Gruß, noisefloor

    Hallo,

    schreib' für jede Aufgabe ein Skript und lasse es zur gewünschten Zeit per systemd Timer Unit (oder Cron) ausführen. Das ist am einfachsten und hat noch zwei Vorteile: a) laufen die Skripte unabhängig, d.h. wenn z.B. die Temperaturmessung abstürzt, werden die anderen Skripte trotzdem ausgeführt. b) wenn du das als systemd Timer Unit ausführst, bekommst du das Logging, also dass das Skript gelaufen ist, direkt gratis mitgeliefert.

    Gruß, noisefloor

    Hallo,

    Zitat

    Kann ich beide Befehle, die die Programme starten in eine Datei tun oder müssen es zwei .Service Befehle sein?


    das `ExecStart` kann mehrfach vorkommen, siehe auch https://www.freedesktop.org/software/syste…html#ExecStart=, 4. Abschnitt. Die Unit läuft dann aber nur, wenn _alle_ `ExecStart` erfolgreich waren. Wenn aber bei die `Accesspoint.py` und `Accespoint02.py`unabhängig laufen soll, dann brauchst du zwei Units.

    Zitat

    Kann ich direkt sagen, dass die python Datei gestartet werden soll oder muss ich erst ein .sh Programm nehmen, die dann die .py Datei(en) startet?


    Klar, geht. So wie du das machst müsste a) die richtige Shebang-Zeile in der Python-Datei stehen und b) diese ausführbar sein. Ich bevorzugte eigentlich diesen Weg:

    Code
    ExecStart=/ur/bin/python /home/pi/Accesspoint.py


    Also den Python-Interpreter aufrufen (in diesem Fall P2, wenn dein Skript in Python 3 geschrieben ist, muss du `python3`statt `python`schreiben) und dann als Argument den absoluten Pfad zur Datei inkl. Dateiname.
    So muss die Datei `Accesspoint.py`keine Shebang-Zeile haben und muss auch von den Dateirechten nur lesbar (und nicht ausführbar) sein.

    Gruß, noisefloor