Ici est une excellente réponse sur la façon d'utiliser json.dumps
pour écrire dans un fichier gzip. Ce que je voudrais faire, c'est utiliser la fonction dump
pour sérialiser le fichier json directement dans un fichier de type GzipFile
objet.
Exemple de code :
import gzip, json
data = # a dictionary of data here
with gzip.open(write_file, 'w') as zipfile:
json.dump(data, zipfile)
L'erreur soulevée est la suivante
TypeError: memoryview: a bytes-like objet is required, not 'str'
Je pense que cela est dû au fait que la méthode gzip write() veut qu'un objet bytes lui soit passé. D'après la norme documentation ,
Le module json produit toujours des objets str, et non des objets bytes. Par conséquent, fp.write() doit supporter l'entrée str.
Existe-t-il un moyen d'envelopper le json
la sortie de la chaîne de caractères sous forme d'octets, de sorte que GzipFile
's write()
s'en chargera ? Ou est-ce que la seule façon de faire est d'utiliser json.dumps
et encode()
la chaîne résultante dans un objet octet, comme dans l'autre réponse liée ?