Python 3, lire/écrire comprimé objets json à partir de/vers fichier gzip

Pour Python3, j'ai suivi @Martijn Pieters du code avec ceci:

import gzip
import json

# writing
with gzip.GzipFile(jsonfilename, 'w') as fout:
    for i in range(N):
        uid = "whatever%i" % i
        dv = [1, 2, 3]
        data = json.dumps({
            'what': uid,
            'where': dv})

        fout.write(data + '\n')

mais cela entraîne une erreur:

Traceback (most recent call last):
    ...
  File "C:\Users\Think\my_json.py", line 118, in write_json
    fout.write(data + '\n')
  File "C:\Users\Think\Anaconda3\lib\gzip.py", line 258, in write
    data = memoryview(data)
TypeError: memoryview: a bytes-like object is required, not 'str'

Des idées sur ce qui se passe?

  • Le code a été probablement écrit avec python2 à l'esprit. Essayez de coder les données: (data+'\n').encode('utf-8').
  • Nope, même erreur.