Auslösen wenn file in Ordner abgelegt wird

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:

Naja, nutze einfach die Methoden zum Schreiben auf einem File-Objekt, etwa ``fobj.write`` :K

Dateien solltest Du immer so öffnen:

Code: Alles auswählen

with open(...) as file_handle:
    # in diesem Block ist file_handle Dein geöffnetes File-Objekt
    # es wird *automatisch* und *auch im Fehlerfall* geschlossen
Diese ganzen ``if``-Blöcke kann man durch ein Dictionary ersetzen:

Code: Alles auswählen

dispatching = {
    "Ein1": ((0, 1), ),
    "Aus1": ((0, 0), ),
    ...
    "Ein3": ((0, 1), (1,1)),
    ...
}

for text, data in dispatching.items():
    print(text)
    for pair in data:
        p.digital_write(*pair)
ungetestet!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Du kopierst noch sehr viel Code, "p" ist für ein Modulname doch sehr nichtssagend, dieses komische "a" mit seinen magischen Werten ist sehr magisch. Einrücktiefe ist immer vier Leerzeichen! Auf Modulebene sollte außer Definitionen nichts stehen.
Ich komm auf ungefähr das hier:

Code: Alles auswählen

import pifacedigitalio as digitalio
import time

def main():
    digitalio.init()
    while True:
        with open('/home/pi/Befehl.txt', 'a') as f:
            text = f.read(4)
            f.write('Okay')
        print(text)
        ein = text.startswith('Ein')
        bits = int(text[3:])
        for port in (0,1):
            if bits&(1<<port):
                digitalio.digital_write(port, ein)
        time.sleep(1)
        
if __name__ == '__main__':
    main()
Willhelm
User
Beiträge: 26
Registriert: Montag 10. Februar 2014, 09:06

Ok tut mir leid ich habe noch die falsch libary importiert

Code: Alles auswählen

import pifacedigitalio
import time
pfd = pifacedigitalio.PiFaceDigital()

a = 50

while a > 5:

    a = 6
    f = open('/home/pi/Befehl.txt', 'r')
    text = f.read(4)
    f.close()
 
 if text == 'Ein1':
    print ('Ein1')
    pfd.relays[0].value = 1

 if text == 'Aus1':
    print ('Aus1')
    pfd.relays[0].value = 0
   
 if text == 'Ein2':
    print ('Ein2')
    pfd.relays[1].value = 1
   
 if text == 'Aus2':
    print ('Aus2')
    pfd.relays[1].value = 1

 if text == 'Ein3':
    print ('Ein3')
    pfd.relays[0].value = 1
    pfd.relays[1].value = 1
   
 if text == 'Aus3':
    print ('Aus3')
    pfd.relays[0].value = 0
    pfd.relays[1].value = 0


   
 time.sleep(1)
Antworten