Python 3.x 从Dropbox API下载文件,以便在Heroku上带有ApacheTika的Python环境中使用

Python 3.x 从Dropbox API下载文件,以便在Heroku上带有ApacheTika的Python环境中使用,python-3.x,dropbox-api,apache-tika,Python 3.x,Dropbox Api,Apache Tika,我正在尝试使用Dropbox作为应用程序/脚本的基于云的文件容器。用Python编写的脚本需要从Dropbox中获取PDF,并使用tika Python包装器将其转换为字符串 我可以连接到Dropbox API,并使用文件\u下载到\u文件()方法将PDF下载到磁盘,然后使用tika从\u文件()方法将下载文件从磁盘拉到处理。例如: # Download ex.pdf to local disk dbx.files_download_to_file('/my_local_path/ex_on_

我正在尝试使用Dropbox作为应用程序/脚本的基于云的文件容器。用Python编写的脚本需要从Dropbox中获取PDF,并使用tika Python包装器将其转换为字符串

我可以连接到Dropbox API,并使用
文件\u下载到\u文件()
方法将PDF下载到磁盘,然后使用tika
从\u文件()
方法将下载文件从磁盘拉到处理。例如:

# Download ex.pdf to local disk 
dbx.files_download_to_file('/my_local_path/ex_on_disk.pdf', '/my_dropbox_path/ex.pdf')

from tika import parser
parsed = parser.from_file('ex_on_disk.pdf')
问题是我正计划在Heroku之类的平台上运行这个应用程序。我认为我无法在本地保存任何内容,然后再次访问它。我不知道如何从Dropbox API中获取可以被tika包装器直接引用的内容,以运行与上面相同的功能。我认为PHPSDK有一套
file\u get\u contents
file\u put\u contents
方法,但它在Python SDK中似乎没有配套的方法

我尝试过用可共享链接代替文件名,但没有成功。有什么想法吗?我知道还有一种下载
files\u download
的方法,可以下载
FileMetadata
对象,但我不知道该怎么办,我很难找到更多关于它的信息


TLDR;我如何在Dropbox上引用一个文件名字符串(如“example.pdf”)的文件,以便在另一个试图从磁盘读取文件的函数中使用,而不将该Dropbox文件保存到磁盘?

我找到了答案。我使用
files\u download
方法获取字节字符串,然后使用tika的
from\u buffer
方法:

md, response = dbx.files_download(path)
file_contents = response.content

parsed = parser.from_buffer(file_contents)

非最小可用程序