下载Heroku中的临时文件,然后阅读它

时间:2017-06-22 14:37:06

标签: python heroku tabula

我正在尝试从站点下载PDF然后阅读它,所有这些都在Heroku中的单个工作器dyno上运行的单个python脚本中。但是,我的脚本要求将文件临时存储在临时文件系统中以便阅读。

documentation开始,这应该是可能的:

  

每个dyno都有自己的短暂文件系统,并带有新的副本   最近部署的代码。在dyno的一生中它的运行   进程可以使用文件系统作为临时暂存器,但没有   写入的文件对任何其他dyno和中的进程可见   写入的任何文件将在dyno停止时丢弃   重新启动。

然而,无论我做什么,它似乎都会抛出一个类似于我在本地计算机上运行时所得到的错误,并且该文件不存在(该脚本在本地计算机上运行正常)。 / p>

请参阅下面我的代码的相关部分,我使用Tabula将PDF处理为CSV。

需要注意的另一点是,在Heroku中检查文件大小时,它返回正确的值,因此文件已经下载并且在文件系统中,但由于某种原因,Tabula包装器无法读取。

#urllib.urlretrieve(url[, filename[, reporthook[, data]]])
urllib.urlretrieve(url, 'downloaded.pdf')

#check if pdf downloaded by checking file size
filesize = os.path.getsize('downloaded.pdf')
print filesize  # this returns the correct value

#if pdf was downloaded correctly then convert info to csv
if (filesize > 30000):
    tabula.convert_into("downloaded.pdf", # error at this line
                            "downloaded.csv",
                            pages="all",
                            output_format="csv")
else:
    print ('404 error')
    sys.exit

我的问题类似于这个question,除了我在一个dyno上运行脚本,这应该可以实现。

0 个答案:

没有答案