Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在docker容器中删除python中的文件?_Python_Python 3.x_Django_Django Rest Framework_Docker Compose - Fatal编程技术网

如何在docker容器中删除python中的文件?

如何在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 =

下面的代码是我代码的一部分。在我的本地机器中,一切正常。但是,我将代码部署到docker容器内部,它会给出错误“结果”:“[Errno 13]权限被拒绝:路径”。在docker容器中删除的解决方案可能是什么?我尝试了
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我会检查它的谢谢,它成功了。这是更好的实现方法。谢谢,它成功了。这是更好的实现方法。