Camelot-py无法循环使用,但适用于单个文件

时间:2019-02-05 14:16:47

标签: python-3.x automation

我目前正在为一家公司从事自动化项目,其中一项任务是要求我遍历目录并将所有pdf文件转换为CSV文件。我正在使用camelot-py库(比我尝试过的其他库要好)。当我将以下代码应用于单个文件时,它就可以正常工作;但是,我希望使其遍历目录中的所有pdf文件。我在以下代码中收到以下错误:

“ OSError:[Errno 22]无效的参数”

import camelot
import csv
import pandas as pd 
import os

directoryPath = r'Z:\testDirectory'
os.chdir(directoryPath)
print(os.listdir())
folderList = os.listdir(directoryPath)
for folders, sub_folders, file in os.walk(directoryPath):  
    for name in file:
        if name.endswith(".pdf"):
            filename = os.path.join(folders,name)
            print(filename)
            print(name)
            tables = camelot.read_pdf(filename, flavor = 'stream', columns= ['72,73,150,327,442,520,566,606,683'])
            tables = tables[0].df
            print(tables[0].parsing_report)       
            tables.to_csv('foo2.csv')

我希望所有文件都转换为“ .csv”文件,但出现错误“ OSError:[Errno 22]无效参数”。我的错误似乎来自第16行。

1 个答案:

答案 0 :(得分:0)

我不知道您是否遇到相同的问题,但就我而言,我犯了一个非常愚蠢的错误,即未将文件放在正确的目录中。我遇到了同样的错误,但是一旦发现问题,脚本就会在常规的for循环中运行。

我不是使用to方法,而是使用批量导出在sql中导出结果,但这应该不是问题。