Je rencontre des problèmes lors de l'écriture d'un programme d'E/S asynchrone. Ce que j'essaye de réaliser est: vider des données de json dans un dossier temporaire ainsi je peux employer alors le sous-processus pour créer une archive de ce dossier (avec des données de json). Cependant j'ai compris que j'essaye de taper un fichier vide de tempfile.NamedTemporatyFile
.Fichiers d'archive d'E/S torsadées
serialized_data = {'a': 1}
temp_file = tempfile.NamedTemporaryFile(dir='.', prefix='serialized_', suffix='.json')
temp_file.write(json.dumps(serialized_data))
arch_name = temp_file.name + '.tar.gz'
tar_cmd_args = ['tar', '-czf', arch_name, temp_file.name]
subprocess.call(tar_cmd_args)
#d = threads.deferToThread(subprocess.call, tar_cmd_args)
J'essaie d'éviter d'E/S autant que possible que je ne veux pas bloquer la chaîne de rappel et je dois être sûr que ces opérations sont thread-safe. Ou est une autre façon de résoudre mon problème? Je veux vraiment éviter json.dump(serialized, file_name)
[modifier]
Tout temp_file.close()
causé: tar: /home/bartosz/Documents/serialized_mnaFP_.json: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errors
La solution a pas de fermer le dossier, mais pour débusquer. temp_file.flush()
Maintenant, je suis en train: 'tar: Retrait principal/de membre names' ' tar: /home/bartosz/Documents/serialized_mnaFP_.json: Impossible stat: Aucun fichier ou directory' 'tar: avec Sortie état d'échec dû à des erreurs précédentes et il n'y a aucun fichier dans l'archive maintenant, pas même un vide comme précédent – heniek