2016-07-13 2 views
1

У меня возникли проблемы с написанием асинхронной программы ввода-вывода. Я пытаюсь достичь: 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()

create & read from tempfile

ответ

0

Закройте файл после того, как вы напишете к ней и перед запуском вторичного потока.

+0

Сейчас я получаю: 'дегтя: Удаление ведущего/из членов names' ' дегтя: /home/bartosz/Documents/serialized_mnaFP_.json: Не может стат: Нет такого файла или directory' 'дегтя: Выход с статус отказа из-за предыдущих ошибок , и в архиве нет файла, даже не пустого, как предыдущий – heniek

Смежные вопросы