Seite 1 von 1
Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Dienstag 22. Juli 2014, 00:03
von jollepe
Hallo,
ich bin noch Neuling auf dem Gebiet von Python.
Ich habe ein Raspberry PI und wollte dort sekündlich den Wert eines Thermometers einlesen
und in einer .txt Datei schreiben, sodass ich am Tagesende eine Verlaufskurve daraus erstellen lassen kann.
Das Skript vom Thermometer ist fertig.
Jedoch benötige ich eure Hilfe, wie ich nun die zeilenweise Ausgabe in eine Datei speichern
kann.
Optimal wäre ein übergeordneter Befehl, der an jedem neuen Tag eine neue .txt Datei anlegt und die neuen Thermometerausgaben
einspeichert.
Hier mein Thermoskript:
Code: Alles auswählen
import os
import glob
import time
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp())
time.sleep(1)
Re: Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Dienstag 22. Juli 2014, 08:15
von MagBen
Mit
Code: Alles auswählen
import datetime
log_filename = datetime.datetime.now().strftime('%Y-%m-%d.log')
kannst Du Dir die Dateinamen erzeugen lassen.
Mit
kannst Du den aktuellen Tag (im Monat) abfragen. Den fragst Du in der Endlosschleife ab und wenn er sich geändert hat, dann machst Du die aktuelle Datei zu und machst eine neue Datei auf.
jollepe hat geschrieben:device_file = device_folder + '/w1_slave'
Das würde ich eher so machen:
Außerdem ist das auch kein device_file, sondern der device_file
name.
Re: Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Dienstag 22. Juli 2014, 10:32
von mobby
@jollepe: Ich würde die Module "w1-gpio" und "w1-therm" nicht über das Python Skript laden, sondern in die Moduldatei (/etc/modules) schreiben. So werden die Module bei jedem Start des PI automatisch geladen und müssen nicht per Hand nachgeladen werden.
Wichtig dabei ist, dass du nur den Modulnamen, also "w1-gpio" und "w1-therm" in die Datei schreibst, das "modprobe" muss weggelassen werden.
Re: Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Dienstag 22. Juli 2014, 12:48
von jollepe
Wie bekomme ich in einer endlos Schleife am sinnvollsten eine Zeitangabe rein die sich bei jedem Schleifendurchlauf aktualisiert
und nicht beim compilen festgelegt wird?
Hätte gerne folgende Syntax: %H:%M:%S %d%m%Y
Mit dem Modul datetime.datetime.now() wird bei mir nur eine Uhrzeit dauerhaft angezeigt.
Re: Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Dienstag 22. Juli 2014, 12:51
von MagBen
jollepe hat geschrieben:Hätte gerne folgende Syntax: %H:%M:%S %d%m%Y
Re: Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Dienstag 5. August 2014, 16:19
von jollepe
Bin leider noch nicht merklich weiter gekommen in meinem Vorhaben,
könnt ihr mir noch ein bisschen Input geben für die Programmierung.
Bin bisher nur C und C++ geübt, Python ist für mich komplett neu.
Also der normale Quellcode läuft soweit wie gewünscht.
Es wird in einem vorgegeben zeitlichen Abstand eine Messung durchgeführt und im Terminal angezeigt.
Nun möchte ich das das Skript dauerhaft läuft und jeden Tag eine neue Datei erzeugt und dort die
neusten Messungen reinschreibt.
Könnt ihr mir noch bisschen helfen?
Vielen Dank
Gruß
Julian
Re: Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Mittwoch 6. August 2014, 14:36
von Kebap
Hallo Julian,
ich hätte gedacht, dass MagBen dir schon das meiste gegeben hat, das dazu nötig sein wird. Hast du irgendwelche konkreten Fragen? Hast du schon einen Versuch gestartet, der aber nicht ganz funktionierte, den du uns zeigen kannst?
Re: Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Mittwoch 6. August 2014, 15:03
von BlackJack
Man könnte auch das `logging`-Modul und dort einen `TimedRotatingFileHandler` verwenden.
Re: Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Donnerstag 7. August 2014, 16:10
von jollepe
Kebap hat geschrieben:Hallo Julian,
ich hätte gedacht, dass MagBen dir schon das meiste gegeben hat, das dazu nötig sein wird. Hast du irgendwelche konkreten Fragen? Hast du schon einen Versuch gestartet, der aber nicht ganz funktionierte, den du uns zeigen kannst?
Naja ich kann ehrlich gesagt mit den Tipps leider nicht viel Anfangen :K
Es fehlt mir aktuell bisschen die Übersicht, wann welcher Befehl mit welchem Syntax vereinbar ist

Re: Ergebnis einer Pythonausgabe in Datei schreiben
Verfasst: Donnerstag 7. August 2014, 17:32
von BlackJack
@jollepe: Die Beschreibung ist ein bisschen zu allgemein um da jetzt weiter zu helfen. Es gibt kaum ”Befehle” in Python, die sind auch alle Syntax, also muss man da nichts vereinbar sein. Und welche Syntax von einem Datentyp durch Implementierung der entsprechenden Methoden unterstützt wird, muss man halt nachlesen. Wobei in den Hinweisen von MagBen auch gar nichts syntaktisch exotisches vorkam, eigentlich nur Attributzugriff per ``.``-Operator und Aufrufe mittels ”Aufrufoperator”, also Klammern mit Null oder mehr Argumenten nach dem Ausdruck der etwas aufrufbares als Ergebnis hat. Welche Module welche Funktionen und Datentypen enthalten und was die Funktionen zurückgeben und welche Methoden die Datentypen haben, hat alles nichts mit Syntax zu tun, sondern steht halt in der Dokumentation zu den Modulen, Funktionen, und Datentypen beschrieben.