laogesix 发表于 2022-5-13 15:50:36

请教下文件路径的问题,应该与编码有关。

使用pyexiv2库处理图片。

    def __init__(self, filename, encoding='utf-8'):
      """ Open an image and load its metadata. """
      self.img = exiv2api.Image(filename.encode(encoding))

它默认解码是utf-8。
按理来说应该韩文中文英文都可以。

但是我试过中文不能,能正常解析出文字。
但是在打开文件时会出问题。
File "C:\Program Files\python\lib\site-packages\pyexiv2\core.py", line 15, in __init__
    self.img = exiv2api.Image(filename.encode(encoding))
RuntimeError: .\14 - Spring Comes (啊啊) & Mozzi\1.jpg: Failed to open the data source: No such file or directory (errno = 2)

换成gbk可以正常运行。

刚刚遇见一个带韩文的文件夹。。。就跑不动了。改成utf-8也不行。

self.img = exiv2api.Image(filename.encode(encoding))
RuntimeError: .\14 - Spring Comes (손손) & Mozzi\1.jpg: Failed to open the data source: No such file or directory (errno = 2)

网上都说这个错是路径有问题,没人提到过编码问题。

大蟒蛇们,这问题到底咋解。

wp231957 发表于 2022-5-13 15:54:39

本帖最后由 wp231957 于 2022-5-13 15:57 编辑

说错了,可以有小括号连词符都可以的

laogesix 发表于 2022-5-13 15:58:27

wp231957 发表于 2022-5-13 15:54
路径里不可以有连词符&

不是这个问题
self.img = exiv2api.Image(filename.encode(encoding))
RuntimeError: .\14 - Spring Comes (啊啊)Mozzi\1.jpg: Failed to open the data source: No such file or directory (errno = 2)

我把符号空格都删也没用
    self.img = exiv2api.Image(filename.encode(encoding))
RuntimeError: .\DJSpringComes啊啊Mozzi\1.jpg: Failed to open the data source: No such file or directory (errno = 2)

wp231957 发表于 2022-5-13 15:59:59

laogesix 发表于 2022-5-13 15:58
不是这个问题




提示就是找不到文件
.\DJSpringComes啊啊Mozzi\1.jpg

laogesix 发表于 2022-5-13 16:02:05

wp231957 发表于 2022-5-13 15:59
提示就是找不到文件
.\DJSpringComes啊啊Mozzi\1.jpg

这个路径存在的,使用gbk解码就可以运行,utf-8就不行 。但是目前遇见韩文就没办法用gbk了

hrpzcf 发表于 2022-5-13 16:54:10

本帖最后由 hrpzcf 于 2022-5-13 17:09 编辑

pyexiv2更新到最新版?作者说过会修复这个问题,不知道修复了没有。
PS:路径编码问题不是你想的那样,不是utf8支持中文就可以用utf8。
在中文windows上默认的多字节编码是gbk,pyexiv2没有使用Python封装的方法打开文件,你指定encoding参数为utf8,pyexiv2就会将字符串编码为utf8传给系统api,系统api用gbk来解释收到的字符串就会出现乱码,就出现路径不存在的问题。如果pyexiv2使用Python封装的方法或者使用windows的宽字节版的api打开文件就不会出现这样的问题,因为Python封装的方法底层做了很多适应性工作。

laogesix 发表于 2022-5-13 17:31:08

hrpzcf 发表于 2022-5-13 16:54
pyexiv2更新到最新版?作者说过会修复这个问题,不知道修复了没有。
PS:路径编码问题不是你想的那样,不 ...

是最新版的。
他上次更新是在两三个月前了
那么请问有没有其他包推荐呢?我就是拿来修改图片的元数据的,
页: [1]
查看完整版本: 请教下文件路径的问题,应该与编码有关。