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.
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.
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()
@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 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?
@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`:
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`:
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!
@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.
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.
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!