Python: OSError: не может определить файл изображения - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь запустить Python3 в Ubuntu, но сталкиваюсь с некоторыми странными ошибками.Сценарий, очевидно, не может найти файл, который, как я подтвердил, существует.

Вот ошибка

Traceback (most recent call last):
  File "script.py", line 52, in <module>
    insert_text("For kunde",dir + "/" + project_num + "_signature_customer.jpg", 0)
  File "script.py", line 46, in insert_text
    insert_text(search_term, img_path, (i + 50))
  File "script.py", line 46, in insert_text
    insert_text(search_term, img_path, (i + 50))
  File "script.py", line 40, in insert_text
    img = openpyxl.drawing.image.Image(img_path)
  File "/usr/local/lib/python3.5/dist-packages/openpyxl/drawing/image.py", line 34, in __init__
    image = _import_image(img)
  File "/usr/local/lib/python3.5/dist-packages/openpyxl/drawing/image.py", line 18, in _import_image
    img = PILImage.open(img)
  File "/usr/lib/python3/dist-packages/PIL/Image.py", line 2295, in open
    % (filename if filename else fp))
OSError: cannot identify image file '/var/www/my_ip/uploads/333333_signature_customer.jpg'

, а вот части скрипта

project_num = "333333"
dir = os.path.dirname(os.path.realpath(__file__))

# This function places the image found at img_path 2 cells above where the search_term is found.
def insert_text(search_term, img_path, i):

  if i > 400:
    return None

  found = False

  for x in range(1 + i,51 + i):
    for y in range(1,101):
      if isinstance(ws.cell(row=x, column=y).value,str):
        if  ws.cell(row=x, column=y).value == search_term:
          img = openpyxl.drawing.image.Image(img_path)
          img.anchor = ws.cell(row=(x-2),column=y).coordinate
          ws.add_image(img)
          found = True

  if not found:
    insert_text(search_term, img_path, (i + 50))

# if os.path.isfile(dir + "/" + project_num + "_signature_ikm.jpg"):
  # insert_text("redacted Testing AS",dir + "/" + project_num + "_signature_ikm.jpg", 0)
if os.path.isfile(dir + "/" + project_num + "_signature_customer.jpg"):
  # insert_text("For kunde","signature_customer.jpg", 0)
  insert_text("For kunde",dir + "/" + project_num + "_signature_customer.jpg", 0)

Здесья использую команду LS в папке, где находится изображение

john_doe@1e19udt0shu6:/var/www/my_ip/uploads$ ls
333333.xlsx                    333333_signed.xlsx  node_modules       script.py       script_backup.py        signature_redacted.jpg
333333_signature_customer.jpg  redacted2.png            package-lock.json  script.py.save  signature_customer.jpg  test.py

Файл явно там, но Python3, кажется, не согласен.Есть идеи, почему?Прежде чем я вызываю insert_text (), я даже подтверждаю, что файл существует.

1 Ответ

1 голос
/ 10 июля 2019

Файл там. Просто PIL не может определить формат файла изображения, поэтому он не может загрузить файл. Файл не является JPEG или любым другим форматом, который может загрузить PIL.

Пробег

file 333333_signature_customer.jpg

или посмотрите на его голову

xxd 333333_signature_customer.jpg | head

чтобы определить тип файла. (xxd в упаковке vim)

...