Seite 1 von 1
Probleme beim Import von Funktiones
Verfasst: Freitag 13. Oktober 2017, 12:02
von Downunder32ffm
Hallo Zusammen,
ich habe ein Problem beim Importieren von einer Funktion, wenn ich die def do über einen Import einfüge und das Programm ausführe Führt das Programm die print funktion aus aber hängt ein None in die nächste Zeile Warum?
Das passiert nicht wenn ich es die while True komplett eingebe.
Danke im Voraus
Code: Alles auswählen
import Zeitstempel as ms #Import ms in Zeitfunktion
import RPi.GPIO as GPIO
#import do as Text
#def do():
#file = open("Abschluss.txt", "a")
#Time = ("PTT pressed: "+ms.Zeit())
#for i in Time:
#file.write(str(i) +"\n")
#file.close()
#print(Time)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP)
count = 0
while True :
GPIO.wait_for_edge(11, GPIO.FALLING)
count += 1
#print(Text.do())
file = open("Abschluss5.txt", "a")
Time = ("PTT pressed: "+ms.Zeit())
for i in Time:
file.write(str(i) +"\n")
file.close()
print(Time)
ms.Zeit()
Re: Probleme beim Import von Funktiones
Verfasst: Freitag 13. Oktober 2017, 12:24
von Sirius3
@Downunder32ffm: das hat nichts mit Importen zu tun. Du hast eine Funktion, die keinen Rückgabewert hat (None) und gibst den mit print aus.
In Python wird immer mit 4 Leerzeichen pro Ebene eingerückt. Dateien öffnet man am besten mit dem with-Statement. Wenn man über einen String iteriert, bekommt man die einzelnen Zeichen. Das sind schon Strings, darauf nochmal `str(i)` aufzurufen ist überflüssig. Willst Du wirklich jedes Zeichen einzeln in einer Zeile haben?
Re: Probleme beim Import von Funktiones
Verfasst: Freitag 13. Oktober 2017, 13:17
von Downunder32ffm
Sirius3 hat geschrieben:@Downunder32ffm: das hat nichts mit Importen zu tun. Du hast eine Funktion, die keinen Rückgabewert hat (None) und gibst den mit print aus.
In Python wird immer mit 4 Leerzeichen pro Ebene eingerückt. Dateien öffnet man am besten mit dem with-Statement. Wenn man über einen String iteriert, bekommt man die einzelnen Zeichen. Das sind schon Strings, darauf nochmal `str(i)` aufzurufen ist überflüssig. Willst Du wirklich jedes Zeichen einzeln in einer Zeile haben?
@Sirius3:
Ich möchte das Drücken eines Taster mit protokollieren und dabei einen String und die Zeit mit ms in eine Datei schreiben. Gibt es schönere Möglichkeiten?
Re: Probleme beim Import von Funktiones
Verfasst: Freitag 13. Oktober 2017, 13:39
von Sirius3
@Downunder32ffm: wenn Du einen String an eine Datei anhängen möchtest und dabei jedes Zeichen in einer eigenen Zeile haben möchtest, nutzt Du am besten `join`:
Code: Alles auswählen
with open("Abschluss5.txt", "a") as output:
output.write('\n'.join("PTT pressed: {:%Y-%m-%d %H:%M:%S.%f}'.format(datetime.datetime.now())) + '\n')
Re: Probleme beim Import von Funktiones
Verfasst: Montag 16. Oktober 2017, 13:28
von Downunder32ffm
Sirius3 hat geschrieben:@Downunder32ffm: wenn Du einen String an eine Datei anhängen möchtest und dabei jedes Zeichen in einer eigenen Zeile haben möchtest, nutzt Du am besten `join`:
Code: Alles auswählen
with open("Abschluss5.txt", "a") as output:
output.write('\n'.join("PTT pressed: {:%Y-%m-%d %H:%M:%S.%f}'.format(datetime.datetime.now())) + '\n')
@Sirius3: Danke für deine Hilfe das eine Problem hat sich erledigt das unterschiedliche Zeiten zwischen dem abspeichern in eine Datei, aber leider hab ich immer noch keinen Ansatzpunkt wie ich es mit dem einfügen über eine Funktion realisiere das kein None aufgerufen wird!
Code: Alles auswählen
import RPi.GPIO as gpio
import time
def Zeit(): #Definition es Zeitstempel
now = time.time() #Einfügen der allgemenínen Zeit
localtime = time.localtime(now) #Zeitdefinition der Zeitanzeige (gmtime = UTC; localtime = lokale eingestellte Uhrzeit)
msecs = "%03d" % int((now -int(now))*1000) #Definition der Millisecunde
return time.strftime("%d-%m-%Y %H:%M:%S.", localtime) + msecs # Übergebener String bei Funktions übergabe
def do():
with open("Abschluss.txt", "a") as output:
Time = ("PTT pressed: "+Zeit())
output.write((Time) + "\n")
print(Zeit())
output.close()
gpio.setmode(gpio.BOARD)
gpio.setup(11, gpio.IN, pull_up_down=gpio.PUD_UP)
count = 0
while True :
gpio.wait_for_edge(11, gpio.FALLING)
count += 1
print(do())
Und das Ergebnis:
>>> ================================ RESTART ================================
>>>
16-10-2017 14:27:41.583
None
Re: Probleme beim Import von Funktiones
Verfasst: Montag 16. Oktober 2017, 14:31
von Sirius3
@Downunder32ffm: Du willst nicht den Rückgabewert von `Zeit()` ausgeben. Laß das einfach sein! Du willst auch `Zeit()` nicht zweimal aufrufen, sondern das Ergebnis in einer Variable speichern. Eingerückt wird immer mit 4 Leerzeichen pro Ebene.
Code: Alles auswählen
import RPi.GPIO as gpio
from datetime import datetime as DateTime
def generate_timestr():
return "{:%Y-%m-%d %H:%M:%S.%f}".format(DateTime.now())[:-3]
def do():
current_time = generate_timestr()
with open("Abschluss.txt", "a") as output:
output.write("PTT pressed: {}\n".format(current_time))
print(current_time)
gpio.setmode(gpio.BOARD)
gpio.setup(11, gpio.IN, pull_up_down=gpio.PUD_UP)
while True:
gpio.wait_for_edge(11, gpio.FALLING)
do()
Re: Probleme beim Import von Funktiones
Verfasst: Dienstag 17. Oktober 2017, 09:12
von Downunder32ffm
Sirius3 hat geschrieben:@Downunder32ffm: Du willst nicht den Rückgabewert von `Zeit()` ausgeben. Laß das einfach sein! Du willst auch `Zeit()` nicht zweimal aufrufen, sondern das Ergebnis in einer Variable speichern. Eingerückt wird immer mit 4 Leerzeichen pro Ebene.
Code: Alles auswählen
import RPi.GPIO as gpio
from datetime import datetime as DateTime
def generate_timestr():
return "{:%Y-%m-%d %H:%M:%S.%f}".format(DateTime.now())[:-3]
def do():
current_time = generate_timestr()
with open("Abschluss.txt", "a") as output:
output.write("PTT pressed: {}\n".format(current_time))
print(current_time)
gpio.setmode(gpio.BOARD)
gpio.setup(11, gpio.IN, pull_up_down=gpio.PUD_UP)
while True:
gpio.wait_for_edge(11, gpio.FALLING)
do()
@ Sirius3: Danke. Ich bin absoluter Programmieranfänger und finde aber auch keine gutes Handbuch für Python. Es tut mir leid das ich dir anscheinend auf die Nerven gehe mit meiner Problematik, denoch finde ich das die schärfer deiner letzten hilfe nicht angemessen ist. kleines Feedback für dich, dein Code funktioniert zwar aber bei einem Tasterdruck werden mehrere Events gelistet!
Danke nochmals und sorry das ich Anfänger bin!