alzogo έγραψε:
Αρχικά, σας ευχαριστώ για τις προτάσεις.
babaliaris1, ναι κατάλαβα τι εννοείς τώρα περί της δομής, sorry δεν πήγε τόσο μακρυά το μυαλό μου
Απ ότι φαίνεται προς το παρών θα χρησιμοποιήσω το module, όπως θα δοκιμάσω και τα άλλα που βρίσκονται στο site που μου έστειλε ο pmav99 και στο μέλλον όταν θα έχω κάποιο παραπάνω χρόνο ίσως διαβάσω και το βιβλίο για το format του excel.
Ευχαριστώ και πάλι παιδιά! Θα τα λέμε..
Χαχα τόση ώρα καθόμουν και ετοίμαζα ένα tutorial για να σε δώσω να καταλάβεις τη ακριβώς είναι
το format ενός αρχείου.
Αφού το έκανα τώρα θα στο δείξω και ας έχεις καταλάβει
Πες ότι θέλεις να κάνεις ένα πρόγραμμα το οποίο να αποθηκεύει τρεις μεταβλητές σε ένα
αρχείο και επίσης να μπορείς να τις ανακτά από αυτό. Η μεταβλητές αυτές είναι name, birthday και town. Το file format που έκατσα και σκέφτηκα για να αποθηκεύω αυτές τις
μεταβλητές στο αρχείο είναι το εξής:
(ανά γραμμή)(Επειδή δεν φαίνεται πολύ καλά, ανάμεσα
τους υπάρχει μια άνω-κάτω τελεία)
Αυτό σημαίνει ότι εάν έχω της μεταβλητές μου με κάποιες τιμές, πχ
name = 'babaliaris'
birthday = '4/1/1996'
town = 'Thessaloniki'
τότε όταν το πρόγραμμά μου θα κάνει την αποθηκεύσει το αρχείο θα είναι έτσι:
name:babaliaris
birthday:4/1/1996
town:Thessaloniki
Άρα το file format μου είναι ότι η μεταβλητή με την τιμή χωρίζεται με το σύμβολο :
(άνω-κάτω τελεία)
και στα αριστερά του βρίσκεται το όνομα της μεταβλητής ενώ στα δεξιά του η τιμή της
μεταβλητής. Τώρα γνωρίζοντας αυτήν τη δομή του αρχείου, όταν το αρχείο το ανοίξω στην
python θα μπορώ να ξεχωρίσω το όνομα των μεταβλητών και των τιμών τους και να τις
αποθηκεύσω στις κατάλληλες μεταβλητές μέσα στο πρόγραμμα μου. Αν δεν το γνώριζα πως θα
το έκανα αυτό; Για αυτόν τον λόγο πρέπει να ξέρεις το format ενός αρχείου για να μπορέσεις
να το επεξεργαστής σε κάποια γλώσσα προγραμματισμού.
Σου έχω κάνεις και το πρόγραμμα για να το τρέξεις και να δεις και πως δουλεύει:
# -*- coding: UTF-8 -*-
name = ''
birthday = ''
town = ''
print("1) Create account")
print("2) Load account\n")
choice = input("Choose: ")
#Δημιουργία και αποθήκευση νέου λογαριασμού.
if choice == '1':
#Διάβασμα των δεδομένων από τον χρήστη#
name = input('Give your name: ')
birthday = input('Give your bithday: ')
town = input('Give your town: ')
#Διάβασμα των δεδομένων από τον χρήστη#
#Εδώ αποθηκεύω τα δεδομένα σε ένα αρχείο με το format file
#που σκέφτηκα να χρησιμοποιήσω.
File = open('saves.txt', 'w') #Ανοιγμα ενός αρχείο για γράψιμο.
File.write('name:'+name+'\n') #Πρώτη γραμμή
File.write('birthday:'+birthday+'\n') #Δεύτερη.
File.write('town:'+town+'\n') #Τρίτη.
File.close() #Κλείσιμο αρχείου.
#Ανάκτηση λογαριασμού από αρχείο.
elif choice == '2':
File = open('saves.txt', 'r') #Ανοιγμα ενός αρχείο για διάβασμα.
#3 φορές γιατί αποθήκευσα 3 μεταβλητές.
for i in range(0, 3):
variable = ''
value = ''
#Διβάζω μια γραμμή από το αρχείο και την μετατρέπω σε
#λίστα χαρακτήρων.
lineAsList = list( File.readline() )
#Ανάκτηση της μεταβλητής.
while 1:
#Έλεγχος του διαχωριστικού συμβόλου.
if lineAsList[0] != ':':
variable += lineAsList[0] #Δημιουργώ την μεταβλητή.
lineAsList.remove(lineAsList[0]) #Αφαιρώ αυτόν τον χαρακτήρα
#από την λίστα μου εφόσον
#τον χρησιμοποίησα ήδη.
#Αφαιρώ το σύμβολο : από την λίστα μου και σπάω το loop.
else:
lineAsList.remove(lineAsList[0])
break
#Ανάκτηση της τιμής.
for char in lineAsList:
#Έλεγχος για τον χαρακτήρα new line(γιατί δεν θέλω να τον
#συμπεριλάβω μέσα στην τιμή της μεταβλητής.)
if char != '\n':
value += char
else:
break
#Εάν η μεταβλητή που ανέκτησα είναι η name τότε:
if variable == 'name':
name = value
#Εάν η μεταβλητή που ανέκτησα είναι η birthday τότε:
elif variable == 'birthday':
birthday = value
#Εάν η μεταβλητή που ανέκτησα είναι η town τότε:
elif variable == 'town':
town = value
File.close()#Κλείσιμο αρχείου.
#Εμφάνιση του λογαριασμού που ανέκτησα#
print("=============Acount=============")
print("Name = "+name)
print("birthday = "+birthday)
print("town = "+town)
print("=============Acount=============")
#Εμφάνιση του λογαριασμού που ανέκτησα#
#Δεν γνωρίζω αυτήν την επιλογή.
else:
print("The program crashed because of uknown choice.")