使用 python 在浏览器功能中创建视图

Creating view in browser functionality with python

我已经为这个问题苦苦挣扎了一段时间,但似乎找不到解决方案。情况是我需要在浏览器中打开一个文件,在用户关闭该文件后,该文件将从他们的机器中删除。我所拥有的只是该文件的二进制数据。如果重要,二进制数据来自 Google 使用 download_as_string 方法存储。

经过一些研究,我发现 tempfile 模块可以满足我的需要,但我无法在浏览器中打开临时文件,因为该文件仅存在于内存中,不存在于磁盘上。关于如何解决这个问题有什么建议吗?

到目前为止,这是我的代码:

import tempfile
import webbrowser

# grabbing binary data earlier on

temp = tempfile.NamedTemporaryFile()

temp.name = "example.pdf"
temp.write(binary_data_obj)
temp.close()

webbrowser.open('file://' + os.path.realpath(temp.name))

当这是 运行 时,我的计算机显示一个错误,指出文件为空,因此无法打开。我在 Mac 上,如果相关的话,我正在使用 Chrome。

您可以尝试使用临时目录:

import os
import tempfile
import webbrowser

# I used an existing pdf I had laying around as sample data
with open('c.pdf', 'rb') as fh:
    data = fh.read()

# Gives a temporary directory you have write permissions to.
# The directory and files within will be deleted when the with context exits.
with tempfile.TemporaryDirectory() as temp_dir:

    temp_file_path = os.path.join(temp_dir, 'example.pdf')

    # write a normal file within the temp directory
    with open(temp_file_path, 'wb+') as fh:
        fh.write(data)

    webbrowser.open('file://' + temp_file_path)

这对我有用 Mac OS。