Код ниже является частью моего кода. На моей локальной машине все в порядке. Однако я развертываю свой код и внутри контейнера докеров, он дает ошибку «результат»: «[Errno 13] Отказано в доступе: путь». Что может быть решением для удаления в контейнере докеров? Пробовал os.remove() тоже, не получилось.
path = "/mypath/"
output = path + "myfile.pdf"
result_file = open(output, "w+b")
pisa_res = pisa.CreatePDF(
source_html,
dest = result_file)
result_file.close()
with open(output, "rb") as pdf_file:
encoded_string = base64.b64encode(pdf_file.read())
os.system(f"rm -rf {output}")
Это может помочь, также я бы порекомендовал прикрепить tmpfs к контейнеру или вашей папке /tmp, чтобы было проще управлять. stackoverflow.com/questions/42816048/…
Я не понимаю, почему вы сохраняете это в файле, а потом читаете - разве вы не можете сделать это без файла? В конце концов вы можете использовать io.BytesIO для создания файла в памяти без записи на диск. И тогда вам не придется его удалять.
@EminMastizada это не то, чего я хочу.
@Kroustou я проверю






я не знаю в чем проблема с этим файлом и как его удалить
но я бы использовал io.BytesIO для создания файла в памяти, а затем он не создает файл на диске, и его не нужно удалять
У меня нет pisa, чтобы проверить это, но это должно быть что-то вроде этого
import io
result_file = io.BytesIO()
pisa_res = pisa.CreatePDF(
source_html,
dest=result_file)
result_file.seek(0) # move to the beginning of file to read it
encoded_string = base64.b64encode(result_file.read())
Модуль io является стандартным модулем, поэтому вам не нужно его устанавливать.
Спасибо, это сработало. Это лучший способ реализации.
Проверьте, есть ли у пользователя, выполняющего этот код, права на удаление этого файла. Похоже на проблему с разрешениями.