Πώς να διαβάζετε και να γράφετε αρχεία Json σε Python

How Read Write Json Files Python



Αυτό το άρθρο θα εξηγήσει τον τρόπο χειρισμού αρχείων και δεδομένων JSON στη γλώσσα προγραμματισμού Python. Η Python έρχεται με μια ενσωματωμένη μονάδα json που καθιστά τον χειρισμό δεδομένων JSON εύκολο και απλό.

Σχετικά με το JSON

Το JSON (JavaScript Object Notation) είναι μια μορφή αρχείου και ένα πρότυπο αποθήκευσης δεδομένων που χρησιμοποιεί ζεύγη κλειδιών-τιμών για την αποθήκευση και την ανταλλαγή δεδομένων. Είναι η πιο ευρέως χρησιμοποιούμενη μορφή ανταλλαγής δεδομένων, που συχνά εμφανίζεται σε API RESTful, ελαφριές βάσεις δεδομένων, αρχεία διαμόρφωσης και άλλο λογισμικό εκτός σύνδεσης ή σε απευθείας σύνδεση που χρειάζεται για αποθήκευση, ανάκτηση και ανταλλαγή δεδομένων. Οι περισσότερες γλώσσες προγραμματισμού περιλαμβάνουν βιβλιοθήκες για ανάλυση και εγγραφή δεδομένων JSON από προεπιλογή και το JSON είναι μια μορφή αγνωστικών δεδομένων γλώσσας προγραμματισμού. Οι τιμές που είναι αποθηκευμένες σε ένα αρχείο JSON ή ωφέλιμο φορτίο συνήθως περιέχουν συμβολοσειρές, αριθμούς και σειριοποιήσιμους τύπους δεδομένων, όπως λίστες (πίνακες).







Λεξικά JSON και Python

Τα δεδομένα JSON σε python μετατρέπονται σε αντικείμενο λεξικού χρησιμοποιώντας τη μέθοδο φόρτωσης. Συχνά παρατηρείται ότι ορισμένοι άνθρωποι εξισώνουν τα δεδομένα json και ένα λεξικό python, καθώς η σύνταξη για τον ορισμό και των δύο είναι σχεδόν η ίδια. Ωστόσο, τα δεδομένα json δεν είναι παρά μια συμβολοσειρά κειμένου δομημένη σε μια άκαμπτη σύνταξη, ενώ ένα λεξικό python είναι ένα αντικείμενο δομής δεδομένων που αποθηκεύεται στη μνήμη. Εάν θέλετε να αποθηκεύσετε δεδομένα λεξικού σε ένα αρχείο κειμένου ή να τα στείλετε σε άλλο πρόγραμμα που δεν είναι python, θα πρέπει πρώτα να τα μετατρέψετε σε συμβολοσειρά κειμένου (byte). Αυτή η συμβολοσειρά κειμένου που έχει απορριφθεί / μετατραπεί καθορίζεται στην τυπική σύνταξη του JSON και η διαδικασία μετατροπής ενός λεξικού python σε συμβολοσειρά συμβατή με json ονομάζεται σειριοποίηση.



Ανάγνωση και απόρριψη δεδομένων JSON σε Python

Τα δεδομένα JSON μπορούν να ανακτηθούν ως απάντηση από διακομιστή, να διαβαστούν από το αρχείο, να τεμαχιστούν από τις παραμέτρους ερωτήματος URL και ούτω καθεξής. Αυτό το άρθρο θα επικεντρωθεί κυρίως στην ανάγνωση δεδομένων json από ένα τοπικά αποθηκευμένο αρχείο. Ας υποθέσουμε ότι ένα αρχείο test.json περιέχει τα ακόλουθα δεδομένα:



{'κωδική ονομασία': 'Eoan Ermine', 'version': 'Ubuntu 19.10'}

Για να διαβάσετε το αρχείο test.json σε python, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα:





εισαγωγήjson

με Άνοιξε ('test.json') όπως καιφά:
δεδομένα=json.φορτώνω(φά)

εγκαταλείπω=json.κατήφεια(δεδομένα)

Τυπώνω (δεδομένα)
Τυπώνω (τύπος(δεδομένα))
Τυπώνω (εγκαταλείπω)
Τυπώνω (τύπος(εγκαταλείπω))

Η πρώτη γραμμή στον παραπάνω κώδικα εισάγει τη μονάδα json. Στην επόμενη γραμμή, το άνοιγμα χρησιμοποιείται για την ασφαλή ανάγνωση των περιεχομένων του αρχείου. Στο πλαίσιο με το ανοιχτό μπλοκ, η μέθοδος json.load χρησιμοποιείται για την ανάγνωση και αποθήκευση περιεχομένων αρχείων στη μεταβλητή δεδομένων. Τα δεδομένα που φορτώθηκαν στο προηγούμενο βήμα μετατρέπονται ξανά σε συμβολοσειρά json χρησιμοποιώντας τη μέθοδο json.dump. Η εκτέλεση του παραπάνω κώδικα θα εμφανίσει την ακόλουθη έξοδο:

{'κωδικό όνομα':'Eoan Ermine', 'εκδοχή':'Ubuntu 19.10'}
<τάξη 'υπαγορεύω'>>
{'κωδικό όνομα':'Eoan Ermine', 'εκδοχή':'Ubuntu 19.10'}
<τάξη 'str'>>

Παρατηρήστε στην παραπάνω έξοδο ότι η μέθοδος json.load διαβάζει ακατέργαστα δεδομένα json σε λεξικό python ενώ οι μέθοδοι json.dumps μετατρέπουν ένα λεξικό σε συμβολοσειρά συμβατή με τη δομή JSON. Μόλις ένα αντικείμενο JSON μετατραπεί σε αντικείμενο λεξικού python, μπορείτε να χρησιμοποιήσετε ενσωματωμένες μεθόδους λεξικού python για τον χειρισμό των δεδομένων. Το παραπάνω παράδειγμα είναι αρκετά βασικό και δεν περιλαμβάνει πίνακες σε δεδομένα JSON ή ένθετες τιμές. Ωστόσο, μέσα στο python, μπορείτε να χειριστείτε αυτές τις τιμές όπως κάθε άλλο ένθετο λεξικό και λίστα.



Ταξινόμηση και όμορφη εκτύπωση δεδομένων JSON

Η μέθοδος json.dump υποστηρίζει ορισμένες προαιρετικές παραμέτρους για την ταξινόμηση των κλειδιών και την όμορφη εκτύπωση της εξόδου για βελτιωμένη αναγνωσιμότητα.

εισαγωγήjson

με Άνοιξε ('test.json') όπως καιφά:
δεδομένα=json.φορτώνω(φά)

εγκαταλείπω=json.κατήφεια(δεδομένα,sort_keys=Αληθής,οδοντώ=4)
Τυπώνω (εγκαταλείπω)

Ο παραπάνω κώδικας θα εμφανίσει την ακόλουθη έξοδο:

{
«κωδική ονομασία»: «Eoan Ermine»,
'έκδοση': 'Ubuntu 19.10'
}

Μετατροπές τύπων δεδομένων

Η παρακάτω λίστα απεικονίζει πώς οι τιμές JSON μετατρέπονται σε αντικείμενα python και αντίστροφα.

JSON Πύθων
σειρά Π
αριθμός int ή float
Σωστό Λάθος Σωστό Λάθος
μηδενικό Κανένας
πίνακας λίστα
αντικείμενο υπαγορεύω

Ενότητα γραμμής εντολών Json.tool

Η Python περιλαμβάνει ένα ωραίο βοηθητικό πρόγραμμα γραμμής εντολών json.tool που μπορεί να χρησιμοποιηθεί για την επικύρωση και την όμορφη εκτύπωση συμβολοσειρών και αρχείων JSON.

$ ηχώ'{' κωδική ονομασία ':' Eoan Ermine ',' version ':' Ubuntu 19.10 '}'| python3 -m json.εργαλείο

Η εκτέλεση της παραπάνω εντολής θα σας δείξει την ακόλουθη έξοδο:

{
«κωδική ονομασία»: «Eoan Ermine»,
'έκδοση': 'Ubuntu 19.10'
}

Μπορείτε επίσης να χρησιμοποιήσετε το json.tool με αρχεία JSON. Αντικαταστήστε το in_file και το out_file στην παρακάτω εντολή με τις επιθυμητές τιμές:

$ python3 -m json.εργαλείοin_file out_file

Εκτός από την όμορφη εκτύπωση, ταξινόμηση και επικύρωση δεδομένων JSON, το json.tool δεν κάνει τίποτα άλλο. Έτσι, εάν θέλετε να χειριστείτε οποιαδήποτε δεδομένα JSON, πρέπει να γράψετε τον δικό σας προσαρμοσμένο κώδικα χρησιμοποιώντας την ενσωματωμένη μονάδα JSON.