对目录中的所有文件运行python脚本

对目录中的所有文件运行python脚本,python,for-loop,absolute-path,pdftotext,whatif,Python,For Loop,Absolute Path,Pdftotext,Whatif,第一次在这里发帖,希望有经验/尝试过的人能分享你的见解。。。在过去的几天几夜里,我一直在努力做到这一点。。。现在,我将无法在目录中的每个文件上循环此脚本 基本上,这两个脚本工作得非常好,它带来一个pdf文件并将其更改为excel工作簿。现在,我需要做的是检查所选目录中的所有文件并执行相同的工作 我一直被困在打开文件的阶段-这是不是说数据(pdf页面-数据[0])无法调用?或者我应该添加更多的阶段来引入数据集 我是否必须为数据集创建一个列表,以便我可以调用数据,因为您需要调用的数据不止一个。。这

第一次在这里发帖,希望有经验/尝试过的人能分享你的见解。。。在过去的几天几夜里,我一直在努力做到这一点。。。现在,我将无法在目录中的每个文件上循环此脚本

基本上,这两个脚本工作得非常好,它带来一个pdf文件并将其更改为excel工作簿。现在,我需要做的是检查所选目录中的所有文件并执行相同的工作


我一直被困在打开文件的阶段-这是不是说数据(pdf页面-数据[0])无法调用?或者我应该添加更多的阶段来引入数据集

我是否必须为数据集创建一个列表,以便我可以调用数据,因为您需要调用的数据不止一个。。这就是python可以读取数据[0]的原因吗

修订脚本

# import 
import os
import glob
import pdftotext
import openpyxl
from pathlib import Path
from string import ascii_uppercase

# open a pdf file
def to_excel(pdf_file):
    with open(pdf_file,'rb') as f: 
        data = pdftotext.PDF(f)
        
# operate data to get titles, values 
datas = data[0].split('\r\n')

finalData = list()
for item in datas:
    if item != '':
        finalData.append(item)

finalDataRefined = list()
for item in finalData:
    if item != '                          BCA Scheduled Maintenance Questions' and item != ' Do you suspect there is Asbestos at the property?' and item != '    Yes' and item != '    No' and item != '\x0c':
        finalDataRefined.append(item.strip())

titles = list()
values = list()

for num, item in enumerate(finalDataRefined):
    if num % 2 == 0:
        titles.append(item)
    else:
        values.append(item)

# get an output file name
       
OPRAST = values[1]
filename = work_dir / f"{OPRAST}.xlxs"

# create an excel workbook
excel_file = openpyxl.Workbook()
excel_sheet = excel_file.active

excel_sheet.append([])

alphaList = list(ascii_uppercase)
for alphabet in alphaList:
    excel_sheet.column_dimensions[alphabet].width = 20

excel_sheet.append(titles)
excel_sheet.append(values)

# save the excel workbook
excel_file.save(filename)
excel_file.close

# run a python script every file in a directory
alphaList = list(ascii_uppercase)

work_dir = Path(r"C:\Users\Sunny Kim\Downloads\Do Forms")
for pdf_file in work_dir.glob("*.pdf"):
    to_excel(pdf_file)

我基本上知道你想做什么,但是你的代码的缩进不是那么可读。。。尤其是python

您的目标是为prefix dir中的每个pdf文件创建一个excel?或者将所有pdf文件聚合到一个excel文件中

下面的编码用于第一个目标

代码逻辑

  • 获取所有pdf文件
  • 循环浏览所有pdf文件,每个:
  • 打开pdf文件
  • 一些手术
  • 导出到excel文件
  • 您可能需要这样的完整代码(只是猜测):

    #------------------导入部件-------------------
    导入操作系统
    导入glob
    导入pdftotext
    导入openpyxl
    从字符串导入ascii_大写字母
    从pathlib导入路径
    def到excel(pdf文件):
    将open(pdf_文件,'rb')作为f:#这将打开pdf文件
    data=pdftotext.PDF(f)
    #------操作数据,获取标题和值-----------
    数据=数据[0]。拆分('\r\n')
    finalData=list()
    对于数据中的项目:
    如果项目!='':
    finalData.append(项目)
    finalDataRefined=list()
    对于finalData中的项目:
    如果项目!='BCA计划维护问题和项目!='你怀疑酒店里有石棉吗?“和物品!=”“是”和项目!='“否”和“项目!=”\x0c':
    finalDataRefined.append(item.strip())
    标题=列表()
    值=列表()
    对于num,枚举中的项(FinalDataDefined):
    如果num%2==0:
    标题.附加(项目)
    其他:
    值。追加(项)
    #--------------获取输出文件名---------------------
    OPRAST=值[1]
    filename=work_dir/f“{OPRAST}.xlxs”
    #--------------创建excel文件表------------------
    excel_file=openpyxl.Workbook()
    excel\u sheet=excel\u file.active
    excel\u sheet.append([])
    alphaList=列表(ascii_大写)
    对于字母列表中的字母:
    excel表格。列尺寸[字母表]。宽度=20
    excel\u表格。附加(标题)
    excel\u工作表。追加(值)
    #---------保存----------------
    excel\u文件。保存(文件名)
    excel\u文件.close
    #--------主程序---------------
    alphaList=列表(ascii_大写)
    work\u dir=Path(r“C:\Users\Sunny Kim\Downloads\Do Forms”)
    对于工作目录glob(“*.pdf”)中的pdf文件:
    到excel(pdf文件)
    
    我基本上知道您想要做什么,但您的代码缩进不太可读。。。尤其是python

    您的目标是为prefix dir中的每个pdf文件创建一个excel?或者将所有pdf文件聚合到一个excel文件中

    下面的编码用于第一个目标

    代码逻辑

  • 获取所有pdf文件
  • 循环浏览所有pdf文件,每个:
  • 打开pdf文件
  • 一些手术
  • 导出到excel文件
  • 您可能需要这样的完整代码(只是猜测):

    #------------------导入部件-------------------
    导入操作系统
    导入glob
    导入pdftotext
    导入openpyxl
    从字符串导入ascii_大写字母
    从pathlib导入路径
    def到excel(pdf文件):
    将open(pdf_文件,'rb')作为f:#这将打开pdf文件
    data=pdftotext.PDF(f)
    #------操作数据,获取标题和值-----------
    数据=数据[0]。拆分('\r\n')
    finalData=list()
    对于数据中的项目:
    如果项目!='':
    finalData.append(项目)
    finalDataRefined=list()
    对于finalData中的项目:
    如果项目!='BCA计划维护问题和项目!='你怀疑酒店里有石棉吗?“和物品!=”“是”和项目!='“否”和“项目!=”\x0c':
    finalDataRefined.append(item.strip())
    标题=列表()
    值=列表()
    对于num,枚举中的项(FinalDataDefined):
    如果num%2==0:
    标题.附加(项目)
    其他:
    值。追加(项)
    #--------------获取输出文件名---------------------
    OPRAST=值[1]
    filename=work_dir/f“{OPRAST}.xlxs”
    #--------------创建excel文件表------------------
    excel_file=openpyxl.Workbook()
    excel\u sheet=excel\u file.active
    excel\u sheet.append([])
    alphaList=列表(ascii_大写)
    对于字母列表中的字母:
    excel表格。列尺寸[字母表]。宽度=20
    excel\u表格。附加(标题)
    excel\u工作表。追加(值)
    #---------保存----------------
    excel\u文件。保存(文件名)
    excel\u文件.close
    #--------主程序---------------
    alphaList=列表(ascii_大写)
    work\u dir=Path(r“C:\Users\Sunny Kim\Downloads\Do Forms”)
    对于工作目录glob(“*.pdf”)中的pdf文件:
    到excel(pdf文件)
    
    尝试将第二个脚本包装到函数中,并为abspath的每个元素调用它。它还有助于将所有导入语句保留在文件的顶部。感谢您的评论,我尝试使用函数(def)扭曲第二个脚本,并尝试了但仍然无法确定如何循环目录中的所有文件……您确定执行了
    data=pdftotext.PDF(f)
    吗?尝试
    p