繁体   English   中英

在运行时从 memory 运行 python zip 文件?

[英]Run python zip file from memory at runtime?

我正在尝试运行使用 requests.get 检索的 python zip 文件。 zip 文件除了 __main__.py 之外还有几个 python 文件目录,所以为了方便将其作为单个文件发送,我将其压缩。

我知道文件正在正确发送,因为我可以将其保存到文件中然后运行它,但是,我想在不将其写入存储的情况下执行它。

工作部分或多或少如下:

import requests
response = requests.get("http://myurl.com/get_zip")

我可以使用 zip 将其写入文件

f = open("myapp.zip","wb")
f.write(response.content)
f.close()

并从命令行手动运行它。 但是,我想要更像

exec(response.content)

这不起作用,因为它仍然被压缩,但你明白了。

如果从 memory 执行它更容易,我也愿意用其他一些通过 Internet 发送代码的格式替换 zip 的想法。

一个可能的解决方案是

import io
import requests
from zipfile import ZipFile

response = requests.get("http://myurl.com/get_zip")
# Read the contents of the zip into a bytes object.
binary_zip = io.BytesIO(response.content)
# Convert the bytes object into a ZipFile.
zip_file = ZipFile(binary_zip, "r")
# Iterate over all files in the zip (folders should be also ok).
for script_file in zip_file.namelist():
    exec(zip_file.read(script_file))

但它有点令人费解,可能可以改进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM