Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法加载图像时继续处理_Python_Imagick - Fatal编程技术网

Python 无法加载图像时继续处理

Python 无法加载图像时继续处理,python,imagick,Python,Imagick,在Python中,我使用获取exif数据(创建的真实日期图像),并获取图像高度和宽度以传递给命令行。这就是我用魔杖的目的。除了脚本遇到包含错误数据的图像外,所有这些都可以正常工作,这在处理250000多个图像时很容易发生。当文件本身损坏时,会导致整个脚本失败。我需要找到一种方法,允许脚本继续执行,即使图像无法正确加载 我正在使用以下导入 import inspect, os, shutil, datetime, time, string, configparser, fnmatch, os,

在Python中,我使用获取exif数据(创建的真实日期图像),并获取图像高度和宽度以传递给命令行。这就是我用魔杖的目的。除了脚本遇到包含错误数据的图像外,所有这些都可以正常工作,这在处理250000多个图像时很容易发生。当文件本身损坏时,会导致整个脚本失败。我需要找到一种方法,允许脚本继续执行,即使图像无法正确加载

我正在使用以下导入

import inspect, os, shutil, datetime, time, string, configparser, fnmatch,  os, MySQLdb, sys, ntpath, math
import MySQLdb.cursors as cursors
from wand.image import Image
from wand.display import display
from tendo import singleton
以下是失败的一行:

with Image(filename=file_original_path) as image:
以下是回溯:

Traceback (most recent call last):
  File "process-files.py", line 244, in <module>
    main()
  File "process-files.py", line 216, in main
    with Image(filename=file_original_path) as image:
  File "/home/pc/.local/lib/python2.7/site-packages/wand/image.py", line 2744, in __init__
    self.read(filename=filename, resolution=resolution)
  File "/home/pc/.local/lib/python2.7/site-packages/wand/image.py", line 2822, in read
    self.raise_exception()
  File "/home/pc/.local/lib/python2.7/site-packages/wand/resource.py", line 222, in raise_exception
    raise e
wand.exceptions.CoderError: Not a TIFF or MDI file, bad magic number 1280 (0x500). `assets/output/27/original.tif' @ error/tiff.c/TIFFErrors/566
Exception TypeError: TypeError("object of type 'NoneType' has no len()",) in <bound method Image.__del__ of <wand.image.Image: (empty)>> ignored
回溯(最近一次呼叫最后一次):
文件“process files.py”,第244行,在
main()
文件“process files.py”,第216行,主
以图像(文件名=文件\原始\路径)作为图像:
文件“/home/pc/.local/lib/python2.7/site packages/wand/image.py”,第2744行,在__
self.read(文件名=文件名,分辨率=分辨率)
文件“/home/pc/.local/lib/python2.7/site packages/wand/image.py”,第2822行,已读
self.raise_异常()
文件“/home/pc/.local/lib/python2.7/site packages/wand/resource.py”,第222行,在raise\u异常中
提高e
wand.exceptions.CoderError:不是TIFF或MDI文件,错误的幻数1280(0x500)`assets/output/27/original.tif'@error/tiff.c/TIFFErrors/566
异常TypeError:TypeError(“类型为'NoneType'的对象没有len()”,)处于忽略状态

顺便说一句,除了传球之外的尝试也不起作用。谢谢。

尝试/except工作,不会导致整个脚本失败

import traceback
from wand.image import Image
from wand.display import display

def doSomething(f):
    _status = 'error'
    try:
        print "processing file: %s" % f
        with Image(filename=f) as image:
            print image
        _status = 'processed'
    except:
        traceback.print_exc()
    finally:
        return _status

if __name__ == '__main__':
    result = {}
    images = ['/tmp/foo.png', '/tmp/bar.png', '/usr/share/locale/kde4/l10n/cf/flag.png']

    for i in images:
        status = doSomething(i)
        result[i] = status
    print result

输出:
{'/tmp/foo.png':'error','/usr/share/locale/kde4/l10n/cf/flag.png':'processed','/tmp/bar.png':'error'}

错误。。。除了传球以外的一次尝试都奏效了。混淆类似的回调。

“不是TIFF或MDI文件”:您有TIFF作为输入吗?您是否尝试捕获
CoderError
TypeError
异常?“顺便说一句,除了传递之外的尝试也不起作用。”请向我们显示该文件的代码。您可能需要使用扩展名
.TIFF
而不是
。tif