У меня возникли проблемы с написанием асинхронной программы ввода-вывода. Я пытаюсь достичь: dump json data во временный файл, поэтому я могу использовать подпроцесс для создания архива этого файла (с данными json). Однако я понял, что пытаюсь удалить пустой файл с tempfile.NamedTemporatyFile
.Архивные файлы с витыми архивами ввода-вывода
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)
Я пытаюсь избежать ввода/вывода, насколько это возможно, так как я не хочу, чтобы блокировать обратного вызова цепь, и я должен быть уверен, что эти операции являются поточно. Или это еще один способ решения моей проблемы? Я действительно хочу, чтобы избежать json.dump(serialized, file_name)
[править]
Хотя temp_file.close()
причиной: tar: /home/bartosz/Documents/serialized_mnaFP_.json: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errors
Решение не было, чтобы закрыть файл, но смывать. temp_file.flush()
Сейчас я получаю: 'дегтя: Удаление ведущего/из членов names' ' дегтя: /home/bartosz/Documents/serialized_mnaFP_.json: Не может стат: Нет такого файла или directory' 'дегтя: Выход с статус отказа из-за предыдущих ошибок , и в архиве нет файла, даже не пустого, как предыдущий – heniek