So verwenden Sie das JSON-Modul und das Pickle-Modul von Python

王林
Freigeben: 2023-05-09 15:43:14
nach vorne
818 Leute haben es durchsucht

json-Modul

json wird für den Datenaustausch zwischen verschiedenen Sprachen verwendet, z. B. zwischen C und Python usw., der sprachübergreifend sein kann. Pickle kann nur für den Datenaustausch zwischen Python und Python verwendet werden.

Serialisierung und Deserialisierung

Wir nennen den Prozess von Objekten (Variablen) aus dem Speicher in speicherbare oder übertragbare Objekte, die in Python als Beizen bezeichnet werden, und werden in anderen Sprachen auch als Serialisierung bezeichnet die gleiche Bedeutung. Nach der Serialisierung kann der serialisierte Inhalt auf die Festplatte geschrieben oder über das Netzwerk an andere Maschinen übertragen werden. Das erneute Einlesen des Variableninhalts aus dem serialisierten Objekt in den Speicher wird wiederum Deserialisierung genannt, also Unpickling.

Wenn wir Objekte zwischen verschiedenen Programmiersprachen übertragen möchten, müssen wir das Objekt in ein Standardformat wie XML serialisieren. Eine bessere Möglichkeit besteht jedoch darin, es in JSON zu serialisieren, da JSON als Zeichenfolge dargestellt wird und alle Sprachen sein kann ​​werden gelesen und können problemlos auf der Festplatte gespeichert oder über das Netzwerk übertragen werden. JSON ist nicht nur ein Standardformat und schneller als XML, sondern kann auch direkt in Webseiten gelesen werden, was sehr praktisch ist.

Das durch JSON dargestellte Objekt ist ein Standard-JavaScript-Sprachobjekt. Die Entsprechung zwischen JSON und den integrierten Datentypen von Python ist wie folgt:

So verwenden Sie das JSON-Modul und das Pickle-Modul von Python

Daten in die Datei schreiben und lesen – Wörterbuch

dic =' {‘string1':'hello'}' #写文件只能写入字符串 - 手动把字典变成字符串
f = open(‘hello', ‘w')
f.write(dic)
Nach dem Login kopieren
f_read = open(‘hello', ‘r')
data = f_read.read() #从文件中读出的都是字符串
data = eval(data) #提取出字符串中的字典
print(data[‘name'])
Nach dem Login kopieren

json implementiert das oben Gesagte Funktionen – JSON kann in verwendet werden. Es gibt einen Unterschied zwischen der Übertragung von Daten in einer beliebigen JSON-Zeichenfolge und der Zeichenfolge, die wir manuell hinzufügen. Es folgt der JSON-Zeichenfolgenspezifikation, d doppelte Anführungszeichen.

dumps wandelt jeden Datentyp, den wir übergeben, in eine Zeichenfolge um, die in doppelte Anführungszeichen gesetzt ist

dic = {‘string1':'hello'}
data = json.dumps(dic)
print(data)
print(type(data)) #dumps()会把我们的变量变成一个json字符串
f = open(“new_hello”, “w”)
f.write(data)
Nach dem Login kopieren

Wir konvertieren die Daten beim Speichern oder Übertragen in eine JSON-Zeichenfolge, die in jeder Sprache implementiert werden kann

Wir packen eine Liste l = [1, 2, 3] in einen JSON-String in Python und speichern oder versenden ihn. Wenn wir JSON-Parsing in der C-Sprache verwenden, erhalten wir den entsprechenden Wert in der C-Sprache. Die Datenstruktur wird extrahiert als Array buf[3] = {1, 2, 3}.

Dies bedeutet nicht, dass Dumps und Loads zusammen verwendet werden müssen, solange der JSON-String der JSON-Spezifikation entspricht, können Loads zum Verarbeiten und Extrahieren der Datenstruktur verwendet werden. Es spielt keine Rolle, ob Dumps verwendet werden oder nicht.

# {‘string1':'hello'} ---> “{“string1”:”hello”}”
# 8 ---> “8”
# ‘hello' ---> ““hello”” – 被json包装后的数据内部只能有双引号
#[1, 2] ---> “[1, 2]”
Nach dem Login kopieren

Beispiel:

f_read = open(“new_hello”, “r”)
data = json.loads(f_read.read()) #这个data直接就是字典类型
print(data)
print(type(data))
Nach dem Login kopieren
json.dumps() # 把数据包装成json字符串 – 序列化
json.loads() # 从json字符串中提取出原来的数据 – 反序列化
Nach dem Login kopieren

Hinweis:

json.dump(data, f) #转换成json字符串并写入文件
#相当于 data = json.dumps(dic) + f.write(data)
data = json.load(f) #先读取文件,再提取出数据
#相当于data = json.loads(f_read.read())
Nach dem Login kopieren

Egal wie die Daten erstellt werden, solange sie dem JSON-Format entsprechen, müssen sie nicht unbedingt als Dumps-Daten geladen werden.

Pickle-Modul

Das Problem mit Pickle ist das gleiche wie das Serialisierungsproblem, das für alle anderen Programmiersprachen spezifisch ist, nämlich, dass es nur mit Python verwendet werden kann und es möglich ist, dass verschiedene Versionen von Python nicht miteinander kompatibel sind. Daher können mit Pickle nur diejenigen gespeichert werden, die nicht wichtig sind. Es spielt keine Rolle, ob die Daten nicht erfolgreich deserialisiert werden können.

#----------------------------序列化
import json
dic={'name':'alvin','age':23,'sex':'male'}
print(type(dic))#<class &#39;dict&#39;>
j=json.dumps(dic)
print(type(j))#<class &#39;str&#39;>
f=open(&#39;序列化对象&#39;,&#39;w&#39;)
f.write(j)  #-------------------等价于json.dump(dic,f)
f.close()
Nach dem Login kopieren
#-----------------------------反序列化<br>
import json
f=open(&#39;序列化对象&#39;)
data=json.loads(f.read())#  等价于data=json.load(f)
Nach dem Login kopieren
Die Verwendung von Pickle und JSON ist die gleiche. Die wissenschaftlichen Namen beider werden Serialisierung genannt, aber das Ergebnis der JSON-Serialisierung ist eine Zeichenfolge und das Ergebnis der Pickle-Serialisierung sind Bytes. Das heißt, die Form ist unterschiedlich, aber der Inhalt ist derselbe. Was jedoch von Pickle serialisiert wird, sind Bytes, das heißt, die in die Datei zu schreibenden Daten sind Bytes, also muss die Datei beim Öffnen geöffnet werden in Form einer wb-Binärdatei geöffnet werden. Der von Pickle in die Datei geschriebene Inhalt ist nicht lesbar (unordentliche Zeichen, aber der Computer kann ihn erkennen), aber die von JSON geschriebenen Daten sind lesbar. Pickle unterstützt mehr Datentypen und Pickle kann Funktionen und Klassen serialisieren. Obwohl JSON diese beiden Serialisierungen nicht unterstützt, wird JSON in den meisten Szenarien dennoch verwendet.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das JSON-Modul und das Pickle-Modul von Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage