Listen Speichern

Objektorientierte Skriptsprache: (python.org)
Antworten
Draco2010
Beiträge: 5
Registriert: Sa Mär 13, 2010 2:10 pm

Listen Speichern

Beitrag von Draco2010 » Sa Mär 13, 2010 2:30 pm

Hallo,

ein kleines Problem habe ich!
Ich habe ein Skript erstellt, wo ich zAHLEN eingebe, die in zwei Listen ausgegeben werden.

So weit so gut!

Das Problem taucht auf, wenn das Skript geschlossen wird, sind die Zahlen beim nächsten Aufruf nicht in der Liste!

Wie können diese Zahlen gespeichert werden ?

Folgender Skript:

Code: Alles auswählen

class intlist(object):
    def __init__(self):
        self.ende=False
        self.liste=[]
    def getint(self,name='\Users\ULTIMATE\Documents\meineliste.txt'):
        while True:
            print 'Bitte geben sie eine Zahl ein fuer',
            print name,
            print ':',
            zahl=(raw_input())
            # Ende der Listeneingabe =
            if zahl=='q':
                self.ende=True
                break # ja, tschuess
            # ist es ein Integer ?
            try:
                i=(int(zahl))
            except: # nein, Fehler
                print 'Eingabefehler'
                continue
            # ja, Integer an die Liste anhängen
            self.liste.append(i)
            break
    def min(self):
        return min(self.liste)
    def max(self):
        return max(self.liste) 

# Start !!

# erzeuge ein Listenobjekt
minlist=intlist()
# gib Werte ein, bis ein 'q' kommt
while not minlist.ende:
    minlist.getint('Minliste')
# gib die Liste aus
print
print minlist.liste
print 'Min:',minlist.min()
print 'Max:',minlist.max()


Danke für die Hilfe!
Gruss

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Listen Speichern

Beitrag von cloidnerux » Sa Mär 13, 2010 3:07 pm

Wie können diese Zahlen gespeichert werden ?
Indem du sie in eine Dtaei speicherst:
http://www.wspiegel.de/pykurs/python09.htm
Um die Listen dann auch wieder laden zu können, solltest du einige Informationen noch in die Datei Packen, z.B Anzahl der Listen und Anzahl Elemente pro Liste.

P.S: Wilkommen im Forum.

MfG cloidnerux
Redundanz macht wiederholen unnötig.
quod erat expectandum

Draco2010
Beiträge: 5
Registriert: Sa Mär 13, 2010 2:10 pm

Re: Listen Speichern

Beitrag von Draco2010 » Sa Mär 13, 2010 8:06 pm

Hallo

besten Dank für die Auskunft!
Mit dem kleinen Skript zum importieren von iteger Spalten kämpfe ich schon seit Tagen :oops:
Jetzt habe ich es raus, wo der Fehler lag. Slash's habe ich falschrum gesetzt!

Gibt es noch die Möglichkeit aus dem "neun Spalten" die "sechste" und "siebte Spalte" herauszufiltern ?

Die "sechste Zeile" sollte in die MAX Spalte, und die "siebte Zeile" sollte in die MIN Spalte eingefügt werden!

Meine derzeitigen zwei Skripts sehen folgendermaßen aus:

ZUM EINFÜGEN:

Code: Alles auswählen

# einfacher Datei-Zugriff in Python
pfad = "c:/Users/ULTIMATE/Documents/meineliste.txt:" # anpassen!!
dateiname="datei_simpel.py"
datei = "c:/Users/ULTIMATE/Documents/meineliste.txt"
in_file = open(datei,"r")
text = in_file.read()
in_file.close()
print text
ZUM ANHÄNGEN IN DIE LISTE:

Code: Alles auswählen

import string
import pickle


oplist = []
def save(datei,list):
	f=open()
	p=pickle.Pickler(f)
	p.dump(list)
	f.close()

def load():
	f = open("meneliste.txt","r")
	oplist = []
	p= pickle.Unpickler(f)
	oplist.append(p.load())
	f.close()

class intlist(object):
    def __init__(self):
        self.ende=False
        self.liste=[]
    def getint(self,name='C:\Users\ULTIMATE\Documents\meneliste.txt'):
        while True:
            print 'Bitte geben sie eine Zahl ein fuer',
            print name,
            print ':',
            zahl=raw_input()
            # Ende der Listeneingabe =
            if zahl=='q':
                self.ende=True
                break # ja, tschuess
            # ist es ein Integer ?
            try:
                i=int(zahl)
            except: # nein, Fehler
                print 'Eingabefehler'
                continue
            # ja, Integer an die Liste anhängen
            self.liste.append(i)
            break
    def min(self):
        return min(self.liste)
    def max(self):
        return max(self.liste) 

# Start !!

# erzeuge ein Listenobjekt
minlist=intlist()
# gib Werte ein, bis ein 'q' kommt
while not minlist.ende:
    minlist.getint('Minliste')
# gib die Liste aus
print
print minlist.liste
print 'Min:',minlist.min()
print 'Max:',minlist.max()
Ich hoffe ihr könnt mir helfen es zu kombinieren.
Es würde bedeuten, wenn ich mein Skript starte, sollen die Zahlen erst in die jeweiligen Spalten importiert werden, und die eingegebenen Zahlen sollen danach wieder angehangen werden!

Besten dank für die Hilfe ;)
Gruss

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Listen Speichern

Beitrag von Xin » So Mär 14, 2010 9:28 am

Hi und willkommen im Forum.

Ich bin kein Python-Experte, aber ich verstehe wohl die Frage bzw. die Aufgabe des Programms auch nicht wirklich. Hier ist geht es um Zahlen in einer Liste. Was meinst Du mit Spalten?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Draco2010
Beiträge: 5
Registriert: Sa Mär 13, 2010 2:10 pm

Re: Listen Speichern

Beitrag von Draco2010 » So Mär 14, 2010 3:57 pm

Hallo

Ich habe in der TXT Datei verschiedene Spalten:
Spalte mit DATUM; Spalte mit UHRZEIT; Spalte mit .......

Aus diesen Spalten benötige ich nür dir Zahlen aus der sechsten und siebten Zeile, die ich in einem Python Skript in zwei Listen importieren möchte;

Danke
Gruss

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Listen Speichern

Beitrag von Xin » Di Mär 16, 2010 11:50 pm

Draco2010 hat geschrieben:Ich habe in der TXT Datei verschiedene Spalten:
Spalte mit DATUM; Spalte mit UHRZEIT; Spalte mit .......

Aus diesen Spalten benötige ich nür dir Zahlen aus der sechsten und siebten Zeile, die ich in einem Python Skript in zwei Listen importieren möchte;
Mangels Pythonkenntnissen halte ich mich hier erstmal raus und wie mir scheint, sind die Python-Profis auch noch spärlich gesäht.

Konntest Du das Problem erstmal so lösen? Falls nicht, versuche ich mich morgen mal dran.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Draco2010
Beiträge: 5
Registriert: Sa Mär 13, 2010 2:10 pm

Re: Listen Speichern

Beitrag von Draco2010 » Mi Mär 17, 2010 4:36 am

Hallo,

es wäre mir auch sehr geholfen, wenn ich die Listen auch ganz normal, nach der Eingabe abspeichern könnte!

Code: Alles auswählen

class intlist(object):
    def __init__(self):
        self.ende=False
        self.liste=[]
    def getint(self,name='\Users\ULTIMATE\Documents\meineliste.txt'):
        while True:
            print 'Bitte geben sie eine Zahl ein fuer',
            print name,
            print ':',
            zahl=(raw_input())
            # Ende der Listeneingabe =
            if zahl=='q':
                self.ende=True
                break # ja, tschuess
            # ist es ein Integer ?
            try:
                i=(int(zahl))
            except: # nein, Fehler
                print 'Eingabefehler'
                continue
            # ja, Integer an die Liste anhängen
            self.liste.append(i)
            break
    def min(self):
        return min(self.liste)
    def max(self):
        return max(self.liste)

# Start !!

# erzeuge ein Listenobjekt
minlist=intlist()
# gib Werte ein, bis ein 'q' kommt
while not minlist.ende:
    minlist.getint('Minliste')
# gib die Liste aus
print
print minlist.liste
print 'Min:',minlist.min()
print 'Max:',minlist.max()
D.h. der Skript wird gestartet, Zahlen eingegeben, und beim beenden mit "quit", sollten die Zahlen abgespeichert werden.
Beim neustart, dann wiederum in die Listen geladen werden.

Gruss

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Listen Speichern

Beitrag von Kerli » Mi Mär 17, 2010 12:17 pm

Also ich würde die Werte einfach als CSV speichern. Dh. zuerst die Werte durch ein Trennzeichen getrennt in die Datei schreiben und nachher wieder auslesen und bei dem Trennzeichen aufteilen. Ich würde es zb in etwa so mache:

Liste schreiben

Code: Alles auswählen

ints = [ 1, 412, 15, 123, 214]
file = open('test.csv','w')
for el in ints:
  file.write('%d,' % el)
file.close()
Lesen

Code: Alles auswählen

file = open('data.csv','r')
for line in file.readlines():
  a = line.split(',')
  print a
file.close()
Beim Lesen musst du noch aufpassen das die Elemente als Strings und nicht als Integer bekommst und das das letzte Element leer ist. Das zu behandeln überlasse ich dann aber dir ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Draco2010
Beiträge: 5
Registriert: Sa Mär 13, 2010 2:10 pm

Re: Listen Speichern

Beitrag von Draco2010 » Mi Mär 17, 2010 12:58 pm

Hallo
danke für den Lösungsskript!
Kleine Anmerkung "test.csv" und "data.csv nicht identisch.
Beim gleichen CSV Dateien klappt es schon besser ;)
file = open('test.csv','w')

Code: Alles auswählen

file = open('data.csv','r')
Ich werde mal versuchen, es in den Skript einzubauen.
Denke das ich die Skripts jeweils pro Liste anwenden kann!

Gruss

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Listen Speichern

Beitrag von Kerli » Mi Mär 17, 2010 1:39 pm

Draco2010 hat geschrieben:Kleine Anmerkung "test.csv" und "data.csv nicht identisch.
Ähm. Ist möglich :oops:
Draco2010 hat geschrieben:Denke das ich die Skripts jeweils pro Liste anwenden kann!
Am Besten schreibst du jede Liste in eigene Zeile. (also nach jeder Liste \n in die Datei schreiben) Mit 'readlines' bekommst du dann eh jede Zeile einzeln aus der Datei heraus.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Antworten