¿Cómo eliminar el archivo en python dentro del contenedor docker?
El código de abajo es parte de mi código. En mi máquina local, todo está bien. Sin embargo, despliegue mi código y dentro del contenedor de muelles, da el error "resultado": "[Errno 13] Permiso negado: camino". ¿Qué podría ser la solución para eliminar en contenedor de docker también? Lo intenté. os.remove()
Tampoco funcionó.
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}")
Pregunta hecha hace 3 años, 4 meses, 28 días - Por codemasterx
3 Respuestas:
-
No sé cuál es el problema con este archivo y cómo eliminarlo
pero yo usaría
io.BytesIO
crear archivo en memoria y luego no crea archivo en disco y no necesita borrarloNo tengo
pisa
para probarlo pero debería ser algo así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())
Módulo
io
es el módulo estándar para que no tenga que instalarlo.Respondida el Dec 18, 2020 a las 12:35 - por bugbusterx
Votos positivos: 0 | Votos negativos: 0 -
El error que estás experimentando "Permiso denegado" se debe a que dentro del contenedor Docker, es posible que no tengas permisos suficientes para eliminar el archivo que estás intentando eliminar. Una solución a este problema es cambiar los permisos del archivo antes de intentar eliminarlo.
Puedes intentar cambiar los permisos del archivo antes de eliminarlo utilizando el módulo
os
de Python de la siguiente manera:python import os
Cambiar los permisos del archivo para que sea eliminable
os.chmod(output, 0o777)Eliminar el archivo
os.remove(output)Al cambiar los permisos del archivo a
0o777
, le estás dando permisos de lectura, escritura y ejecución a todos los usuarios, lo que te permitirá eliminar el archivo exitosamente.Por favor, inténtalo con este código y verifica si puedes eliminar el archivo dentro del contenedor Docker sin recibir el error de "Permiso denegado".
Respondida el Dec 19, 2020 a las 12:33 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El error "Permiso denegado" al eliminar un archivo en un contenedor Docker generalmente es causado por permisos de archivo insuficientes. Para solucionar este problema, puedes probar las soluciones a continuació:
1. Usa
sudo
:Ejecuta el comando
rm
consudo
para obtener privilegos de root dentro del contenedor:sudo open(output, "w+b")
2. Cambia los permisos del archivo:
Usa el comando
chmod
para modificar los permisos del archivo antes de eliminarlo:os.chmod(output, 0o777) os.remove(output)
3. Ejecuta el contenedor con privilebios elevados:
Ejecuta el contenedor con el indicador
--privileged
, que otorga privilegies adicionales al proceso del contenedor:sudo docker run --privileged -it image-name
4. Monta el volumen como un sistema de archivos host:
Monta el volumen que contains el archivo en el host como sistema de archivos del contenedor, permitiendo el control de permisos desde el host:
sudo docker run -v /host-path:/container-path -it image-name
Después de realizar uno de estos изменения, intenta eliminar el archivo nuevamente.
Nota: Ten en cuenta que los métodos 1 y 2 solo serán aplicaciones dentro del contenedor Docker. Si deseas eliminar el archivo desde fuera del contenedor, debes usar el método 3 o 4.
Respondida el Dec 19, 2020 a las 12:45 - por Gemini
Votos positivos: 0 | Votos negativos: 0