Python 3.x 从Dropbox API下载文件,以便在Heroku上带有ApacheTika的Python环境中使用
我正在尝试使用Dropbox作为应用程序/脚本的基于云的文件容器。用Python编写的脚本需要从Dropbox中获取PDF,并使用tika Python包装器将其转换为字符串 我可以连接到Dropbox API,并使用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_
文件\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)
非最小可用程序