Seite 2 von 2
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Dienstag 11. Februar 2014, 13:44
von Hyperion
@BlackJack: Ich habe in Zeile 6 lediglich das letzte String-Literal korrekt beendet, sprich ein einzelnes ' hinter dem "'changed" hinzugefügt. Das sah ich sofort durch das Syntax-Highlighting; alles andere hab ich mir nicht weiter angeguckt.
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Dienstag 11. Februar 2014, 13:54
von Willhelm
Angefangen mit IDLE 3 wenn ich eingebe import pyinotify kommt No module named pyinotify
oder wenn ich ein in einem blank file schriebe die datei endung auf .py mache und in den einstellungen make the file executable. und dann f5 oder im reiter run auf run module klicke kommt der fehler.
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Dienstag 11. Februar 2014, 14:03
von Hyperion
Dann hast Du das Modul offenbar nicht oder nicht korrekt installiert

Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Dienstag 11. Februar 2014, 14:16
von BlackJack
@Willhelm: Wenn Du ein Modul für Python 2 installierst, dann steht das natürlich nicht in Python 3 zur Verfügung. Wenn Du es mit Python 2 mit ``python -m pyinotify`` ausführst, dann geht es.
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Dienstag 11. Februar 2014, 14:24
von Willhelm
ich habe die pyinotify version 0.9.4 die eigentlich auch für python 3 gedacht ist.
installiert habe ich es mit sudo pip install pyinotify und update habe ich auch schon ausgeführt
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Dienstag 11. Februar 2014, 14:28
von cofi
Ich nehme mal an, dass das das "Standard" pip ist. Dann benutzt das das `python` Executable, was zur Zeit "normalerweise" fuer Python 2 steht.
sollte es dir fuer Python 3 installieren.
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Dienstag 11. Februar 2014, 14:39
von Willhelm
geht nicht zurück kommt no module named pip
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Dienstag 11. Februar 2014, 15:02
von BlackJack
@Willhelm: Na dann ist `pip` nicht für Python 3 installiert sondern nur für Python 2.
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Dienstag 11. Februar 2014, 15:46
von Hyperion
Auf Linux-Systemen, bei denen Python2 Standard ist, wird ein ``pip`` für Python3 dann unter dem Namen ``pip3`` abgelegt (also der Aufrufname im Pfad). Vermutlich musst Du erst über die Paketverwaltung Deiner Distribution das entsprechende Paket (iirc auch oftmals ``pip3``) installieren *und* dann entsprechend aufrufen.
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Mittwoch 12. Februar 2014, 14:15
von Willhelm
ok vielen Dank ich habe noch einbischen rum probiert aber es hat nicht funktioniert. desshalb habe ich es sein lassen.
Ich bin ausgewichen auf wenn ein file ausgelesen wird mach das.
So sieht es aus und es funktioniert
Code: Alles auswählen
import pifacedigitalio as p
import time
p.init()
a = 50
while a > 5:
a = 6
f = open('/home/pi/Befehl.txt', 'a')
text = f.read(4)
f.close()
if text == 'Ein1':
print ('Ein1')
p.digital_write(0,1)
if text == 'Aus1':
print ('Aus1')
p.digital_write(0,0)
if text == 'Ein2':
print ('Ein2')
p.digital_write(1,1)
if text == 'Aus2':
print ('Aus2')
p.digital_write(1,0)
if text == 'Ein3':
print ('Ein3')
p.digital_write(0,1)
p.digital_write(1,1)
if text == 'Aus3':
print ('Aus3')
p.digital_write(0,0)
p.digital_write(1,0)
time.sleep(1)
Jetzt möchte ich aber wieder in das file zurück schreiben und habe viel gegoogelt aber nichts hat funktioniert.
da die typen andere befehle nutzen.
freue mich auf eine Antwort
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Mittwoch 12. Februar 2014, 14:39
von Hyperion
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!
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Mittwoch 12. Februar 2014, 14:53
von Sirius3
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()
Re: Auslösen wenn file in Ordner abgelegt wird
Verfasst: Mittwoch 12. Februar 2014, 14:58
von Willhelm
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)