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