我有一个用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
答案 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)
。