首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pdfminer转换多个文件

用pdfminer转换多个文件
EN

Stack Overflow用户
提问于 2016-11-28 17:21:33
回答 2查看 1.2K关注 0票数 0

我在网上找到了代码,它允许使用Python中的pdfminer模块将几个pdf文件转换为文本文件。我试图对保存在目录中的几个pdf文件展开代码,但是代码会导致错误。

到目前为止我的代码是:

代码语言:javascript
复制
import nltk
import re
import glob

from cStringIO import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage

def convert(fname, pages=None):
   if not pages:
       pagenums = set()
    else:
       pagenums = set(pages)

   output = StringIO()
   manager = PDFResourceManager()
   converter = TextConverter(manager, output, laparams=LAParams())
   interpreter = PDFPageInterpreter(manager, converter)

   infile = file(fname, 'rb')
   for page in PDFPage.get_pages(infile, pagenums):
       interpreter.process_page(page)
   infile.close()
   converter.close()
   text = output.getvalue()
   output.close

   with open('D:\Reports\*.txt', 'w') as pdf_file:
       pdf_file.write(text)

   return text

directory = glob.glob('D:\Reports\*.pdf')  

for myfiles in directory:  
     convert(myfiles)

错误信息:

代码语言:javascript
复制
Traceback (most recent call last):
  File "F:/Text mining/pdfminer for several files", line 40, in <module>
    convert(myfiles)
  File "F:/Text mining/pdfminer for several files", line 32, in convert
    with open('D:\Reports\*.txt', 'w') as pdf_file:
IOError: [Errno 22] invalid mode ('w') or filename: 'D:\\Reports\\*.txt'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-28 17:47:59

此错误源于试图将text变量的内容写入名为'D:\Reports\*.txt'的文件。不允许在文件名(参考)中使用通配符*

如果要将文件保存到同名文本文件中,可以将写入功能替换为:

代码语言:javascript
复制
   outfile = os.path.splitext(os.path.abspath(fname))[0] + '.txt'
   with open(outfile, 'wb') as pdf_file:
       pdf_file.write(text)

如果您想以与操作系统无关的方式处理路径,请不要忘记使用import os

票数 1
EN

Stack Overflow用户

发布于 2016-11-28 17:40:55

也许你应该改变一下:

代码语言:javascript
复制
with open('D:\Reports\*.txt', 'w') as pdf_file:
    pdf_file.write(text)

代码语言:javascript
复制
with open(fname, 'w') as pdf_file:
    pdf_file.write(text)

但是我的机器上没有python2.7-3.4可以用来验证

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40850034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档