Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

docx.opc.exceptions.PackageNotFoundError: Package not found at

Can't open doxc file by path (Package not found at...)

View of directory:

enter image description here

Code:

from docx import Document

# some path of file:
path = 'TestDir/dir2/doc22.docx'

# open docx file:
doc = Document(path)

Have this:

Traceback (most recent call last):
  File "T23_7.py", line 73, in <module>
    searchRegex(dirName, regex)
  File "T23_7.py", line 57, in searchRegex
    current_doc = Document(docx_file)
  File "/home/ch_dmitriy/Documents/Projects/Tutorials/mech-mat-homework/env/lib/python3.5/site-packages/docx/api.py", line 25, in Document
    document_part = Package.open(docx).main_document_part
  File "/home/ch_dmitriy/Documents/Projects/Tutorials/mech-mat-homework/env/lib/python3.5/site-packages/docx/opc/package.py", line 116, in open
    pkg_reader = PackageReader.from_file(pkg_file)
  File "/home/ch_dmitriy/Documents/Projects/Tutorials/mech-mat-homework/env/lib/python3.5/site-packages/docx/opc/pkgreader.py", line 32, in from_file
    phys_reader = PhysPkgReader(pkg_file)
  File "/home/ch_dmitriy/Documents/Projects/Tutorials/mech-mat-homework/env/lib/python3.5/site-packages/docx/opc/phys_pkg.py", line 31, in __new__
    "Package not found at '%s'" % pkg_file
docx.opc.exceptions.PackageNotFoundError: Package not found at 'TestDir/dir2/doc22.docx'

Help, please.

like image 343
Django Girl Avatar asked Nov 09 '17 10:11

Django Girl


2 Answers

This error simply means there is no .docx file at the location you specified.

Since you specified a relative path, the actual path used is determined by adding 'TestDir/dir2/doc22.docx' to the current working directory Python is using at run time.

You can discover the path being used with this short code snippet:

import os
print(os.path.abspath('TestDir/dir2/doc22.docx')

I expect you'll find that it prints out a path that does not exist, and that you'll need to modify the path string you give it to point to the right place.

Worst case, you can specify an absolute path, like /home/ch_dmitriy/Documents/Projects/Tutorials/TestDir/dir2/doc22.docx.

like image 161
scanny Avatar answered Sep 28 '22 16:09

scanny


I had the same issue with the correct path. What worked for me is to create the .docx file with an empty Document().

document = docx.Document()
document.save('your_doc_name.docx')

So you can do something like :

try:
  document = docx.Document('your_doc_name.docx')
except:
  document = docx.Document()
  document.save('your_doc_name.docx')
  print("Previous file was corrupted or didn't exist - new file was created.")
like image 32
RedQueen Avatar answered Sep 28 '22 17:09

RedQueen