如何修复python shell上显示的错误?

时间:2017-12-11 12:00:03

标签: python pdf text arabic

我有一个用PYTHON编写的代码,代码允许用户选择包含 PDF文件的文件夹的路径,并将其转换为文本文件

当内容不是 ARABIC 时,系统系统工作正常。

显示

错误:

  

Traceback(最近一次调用最后一次):文件   “C:\ Users \ test \ Downloads \ pdf-txt \ text maker.py”,第32行,in       path = list [i] IndexError:列表索引超出范围

代码:

import os
from os import chdir, getcwd, listdir, path
import codecs
import pyPdf
from time import strftime

def check_path(prompt):
    ''' (str) -> str
    Verifies if the provided absolute path does exist.
    '''
    abs_path = raw_input(prompt)
    while path.exists(abs_path) != True:
        print "\nThe specified path does not exist.\n"
        abs_path = raw_input(prompt)
    return abs_path    

print "\n"

folder = check_path("Provide absolute path for the folder: ")

list=[]
directory=folder
for root,dirs,files in os.walk(directory):
    for filename in files:
        if filename.endswith('.pdf'):
            t=os.path.join(directory,filename)
            list.append(t)

m=len(list)
i=0
while i<=len(list):
    path=list[i]
    head,tail=os.path.split(path)
    var="\\"

    tail=tail.replace(".pdf",".txt")
    name=head+var+tail



    content = ""
    # Load PDF into pyPDF
    ##pdf = pyPdf.PdfFileReader(file(path, "rb"))
    pdf = pyPdf.PdfFileReader(codecs.open(path, "rb", encoding='UTF-8'))


    # Iterate pages
    for i in range(0, pdf.getNumPages()):
        # Extract text from page and add to content
        content += pdf.getPage(i).extractText() + "\n"
    print strftime("%H:%M:%S"), " pdf  -> txt "
    f=open(name,'w')
    f.decode(content.encode('UTF-8'))
   ## f.write(content.encode("UTF-8"))
    f.write(content)
    f.close

2 个答案:

答案 0 :(得分:1)

只需更改

即可解决错误
while i<=len(list):

为:

while i<len(list):

因为在python中允许带有N个元素的列表的索引是: 0,1,...,N-1 在尝试访问元素时,N给出了一个IndexError。

答案 1 :(得分:0)

如果列表的最后一个索引是n,则列表的len是n+1。 这意味着当您想要访问列表时,您不希望访问list[length of list]又名n+1,因为这不存在!

我相信你代码中唯一错误的一行是,它应该是:

while i < len(list):

而不是

while i <= len(list):

您不希望i获取值len(list)