【发布时间】:2020-06-23 21:46:12
【问题描述】:
我正在尝试从多个 pdf 中的多个表中提取数据并将其保存为 csv 格式。我做了研究,发现 python-camelot 是一个很好的提取工具。我试过了,它在单个 pdf 上工作得很好。但是,我有超过 50 个相同格式的 PDF,所以我决定使用 For 循环遍历所有文件,但它不起作用,并且我得到一个错误文件在目录中找不到。你能帮忙吗?代码如下:
import tkinter
import camelot
import os
directory = 'C:\\Users\\Alr\\Desktop\\test\\'
files = [ filename for filename in os.listdir(directory)]
for i in range (len(files)):
tables = camelot.read_pdf(files[i], pages='5,6,7')
tables.export(files[i], f='csv', compress=True) # json, excel, html, sqlite
tables.to_csv(files[i]+'.csv')
【问题讨论】:
-
files永远不会被设置为任何值。您是否忘记读取文件夹? -
@usr2564301 谢谢你的重播。我忘了包括 - 刚刚更新了代码
-
现在问题很清楚了——唉,这是一个常见的错误。
os.listdir返回文件名,这意味着不包括路径。只需在read_pdf中的文件名前加上directory即可。 -
@usr2564301 非常感谢您,我认为您是对的,在我将路径添加到名称后它就可以工作了。但是,我在导出它时遇到问题,因为我使用文件名作为 csv 文件的名称,但它在名称中包含“.pdf”,现在代码出现错误。那么有什么方法可以从名称中取出 .csv 并使用文件名
标签: python pdf-scraping python-camelot