ich will euch mal hier ein kleines Programm zeigen, was im Aktuellen Verzeichnis alle .txt einliest und dann ein Wörterbuch erstellt, wo die Wörter der Dateien die Values sind und die die Namen der Dateien die Keys.
Code: Alles auswählen
import pickle
from os import listdir
import re
import pickle
try:
with open("picklesp.pickle","r") as speicherort:
Diginari = pickle.load(speicherort)
except IOError as err:
Diginari = {}
except pickle.PickleError as p_error:
print("Pickle Fehler : ", p_error)
alle_Datein = [Datei for Datei in listdir(".") if ".txt" in Datei and ".txt~" not in Datei]
for daten in alle_Datein:
try:
with open(daten,"r") as aktuelle_datei:
tet = re.split("\s",aktuelle_datei.read())
for woerter in tet:
if (len(woerter) == 0):
pass
elif (woerter not in Diginari.keys()):
Diginari[woerter] = [daten]
elif (woerter in Diginari.keys()):
if (daten not in Diginari[woerter]):
Diginari[woerter].append(daten)
except IOError as err:
print("Dateifehler ist Aufgetreten.\nEs ist folgender Fehler: ",err," in der Datei : ",daten)
print(Diginari)
try:
with open("picklesp.pickle","w") as speicherort:
pickle.dump(Diginari,speicherort)
except IOError as err:
print("Dateifehler ist beim Speichern Aufgatereten.\nEs ist folgender Fehler: ",err)
except pickle.PickleError as p_error:
print("Pickle Fehler : ", p_error)
Die Lösung war, dass ich die pickle datei löschen müsste. aber warum das ganze ?
Für die 3.3 Version hab ich nun folgendes verändert und so geht er auch in der Version 3.3 :
Code: Alles auswählen
try:
with open("picklesp.pickle","[b]rb[/b]") as speicherort:
Diginari = pickle.load(speicherort)
except IOError as err:
Diginari = {}
except pickle.PickleError as p_error:
print("Pickle Fehler : ", p_error)
#... code ist gleich mit oben .....
try:
with open("picklesp.pickle","[b]wb[/b]") as speicherort:
pickle.dump(Diginari,speicherort)
except IOError as err:
print("Dateifehler ist beim Speichern Aufgatereten.\nEs ist folgender Fehler: ",err)
except pickle.PickleError as p_error:
print("Pickle Fehler : ", p_error)
http://docs.python.org/3.3/library/pickle.html nicht so ganz verstanden und verstehe den Unterschied nicht wirklich von 2.7 und 3.3 und warum das vor allem so gemacht wurde.
Eine zweite Frage zu pickle ist : Ist es möglich ein gepicklete Datei, die in der Version 2.7 entstanden ist in die Version 3.3 einzulesen?
Eine andere Sache ist : Habt ihr noch Verbesserungsvorschläge für den Code ? Was haltet ihr vom Code ?
Was ist besser, diese from bla import x, oder import bla nur ?
Ps.: Der Code ist glaub ich gut verständlich und deswegen nicht groß kommentiert.
Mit freundlichen Grüßen