【问题标题】:How to convert mongodb document to binary in Python?如何在 Python 中将 mongodb 文档转换为二进制文件?
【发布时间】:2014-10-22 10:35:22
【问题描述】:

我正在尝试转换这个 python 命令行实用程序,以便我可以将代码用作我现有程序中的模块,以便我可以使用MongoEngine 为它提供一个存储在 MongoDB 中的 pdf。

目前它将文件名作为字符串并使用以下代码获取文件:

fp = file(fname, 'rb')

由于我想从我的 mongoDB 中放入一个文档,我将函数的参数更改为 main(fp) 并从交互式 python 解释器中执行以下操作:

>>> from app.documents import UserDocument
>>> from app.pdfutils2 import main
>>> doc = UserDocument.objects.first()
>>> main(doc._file.read())
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "app/pdfutils2.py", line 107, in main
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password, caching=caching, check_extractable=True):
  File "/Library/Python/2.7/site-packages/pdfminer/pdfpage.py", line 118, in get_pages
    parser = PDFParser(fp)
  File "/Library/Python/2.7/site-packages/pdfminer/pdfparser.py", line 43, in __init__
    PSStackParser.__init__(self, fp)
  File "/Library/Python/2.7/site-packages/pdfminer/psparser.py", line 495, in __init__
    PSBaseParser.__init__(self, fp)
  File "/Library/Python/2.7/site-packages/pdfminer/psparser.py", line 166, in __init__
    self.seek(0)
  File "/Library/Python/2.7/site-packages/pdfminer/psparser.py", line 507, in seek
    PSBaseParser.seek(self, pos)
  File "/Library/Python/2.7/site-packages/pdfminer/psparser.py", line 196, in seek
    self.fp.seek(pos)
AttributeError: 'str' object has no attribute 'seek'

由于fp 最初是使用'rb' 标志创建的,我想我需要从mongoengine 以二进制模式创建fp,但我不知道如何将我的FileField 中的GridFS 结果转换为二进制模式。

有没有人知道如何将 GridFS 结果转换为二进制,以便与使用file(fname, 'rb') 检索它时相同?欢迎所有提示!

【问题讨论】:

    标签: python mongodb pdf mongoengine pdfminer


    【解决方案1】:

    我找到了答案,所以为了以后的读者;我应该做的

    main(doc._file)
    

    而不是

    main(doc._file.read())
    

    祝你有美好的一天!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-07
      • 2011-05-12
      • 1970-01-01
      • 2015-11-07
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多