目录'static/'不存在。导入fitz时引发RuntimeError错误。

17

当我运行extract_img.py文件时,我遇到了以下错误:

RuntimeError(f“Directory '{directory}' does not exist”)
RuntimeError: Directory 'static/' does not exist from import fitz

我不明白为什么会出现这个错误信息。我之前看过相关讨论,但是没有理解解决方法。你能帮我吗?

这个文件旨在从PDF文件中提取某些特定的图片,在一个文件中保存这些图片。

from os import chdir
import shutil, os
import io
from PIL import Image
import fitz
from unif_noun import unif_noun #other file python for change file noun.

def execute_func(rootdir):
for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        filepath = subdir + os.sep + file
        if filepath.endswith(".pdf"):
            #extract(f"{filepath}")
            # open the file
            pdf_file = fitz.open(file)
            images = list()
            for page_index in range(len(pdf_file)):
                # get the page itself
                page = pdf_file[page_index]
                image_list = page.getImageList()
                # printing number of images found in this page
                # if image_list:
                #     print(f"[+] Found a total of {len(image_list)} images in page {page_index}")
                # else:
                #     print("[!] No images found on page", page_index)
                for image_index, img in enumerate(page.getImageList(), start=1):
                    images.append(img[0])
            for i, xref in enumerate(images, start=1):
                if 1 < i < len(images) - 3:
                    # extract the image bytes
                    base_image = pdf_file.extractImage(xref)
                    image_bytes = base_image["image"]
                    # get the image extension
                    image_ext = base_image["ext"]
                    # load it to PIL
                    image = Image.open(io.BytesIO(image_bytes))
                    # save it to local disk
                    image.save(open(f"{unif_noun(file)}.{image_ext}", "wb"))
                    # Déplacer un fichier du répertoire
                    for subdir, dirs, files in os.walk(rootdir):
                        for f in files:
                            source = subdir
                            destination = 'C:/Users/.../VS Projects/img'
                            filename = os.path.basename(source)
                            dest = os.path.join(destination,filename)
                            shutil.move(source + f"{unif_noun(file)}.{image_ext}", dest)
execute_func(r'C:/Users/Factoryz Amandine/OneDrive/Bureau/Python/CCOR02752150_3.pdf')[enter image description here][1]

如果是目录层次结构,则必须存在沿途的所有内容。如果错误消息中还显示了更多的调用堆栈,那么失败的原因会更清晰明了。 - Ben Y
2个回答

41

3
我遇到了同样的问题,安装 PyMuPDF 后问题得到解决。(猜测这不是第一次使用 PyMuPDF 来解决其他由fitz引起的问题)
pip3 install PyMuPDF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接