如何在docker容器中删除python中的文件?
下面的代码是我代码的一部分。在我的本地机器中,一切正常。但是,我将代码部署到docker容器内部,它会给出错误“结果”:“[Errno 13]权限被拒绝:路径”。在docker容器中删除的解决方案可能是什么?我尝试了如何在docker容器中删除python中的文件?,python,python-3.x,django,django-rest-framework,docker-compose,Python,Python 3.x,Django,Django Rest Framework,Docker Compose,下面的代码是我代码的一部分。在我的本地机器中,一切正常。但是,我将代码部署到docker容器内部,它会给出错误“结果”:“[Errno 13]权限被拒绝:路径”。在docker容器中删除的解决方案可能是什么?我尝试了os.remove(),但也没有成功 path = "/mypath/" output = path + "myfile.pdf" result_file = open(output, "w+b") pisa_res =
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}")
我不知道这个文件有什么问题以及如何删除它 但我会使用
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
是标准模块,因此您不必安装它。我不知道这个文件有什么问题以及如何删除它
但我会使用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
是标准模块,因此您不必安装它。检查执行此代码的用户是否有权删除此文件。听起来像是权限问题。这可能会有所帮助。另外,我建议将tmpfs附加到容器或/tmp文件夹,这样更易于管理。我不明白你们为什么要把它保存在文件里,然后再去读——你们不能不用这个文件吗?最后,您可以使用io.BytesIO
在内存中创建文件,而无需在磁盘上写入。然后您就不必删除它了。@Emimastizada这不是我想要的。@Kroustou我将检查执行此代码的用户是否有权删除此文件。听起来像是权限问题。这可能会有所帮助。另外,我建议将tmpfs附加到容器或/tmp文件夹,这样更易于管理。我不明白你们为什么要把它保存在文件里,然后再去读——你们不能不用这个文件吗?最后,您可以使用io.BytesIO
在内存中创建文件,而无需在磁盘上写入。然后你就不必删除它了。@Emimastizada这不是我想要的。@Kroustou我会检查它的谢谢,它成功了。这是更好的实现方法。谢谢,它成功了。这是更好的实现方法。