gpt4 book ai didi

不同操作系统的 Python open() unicode 文件名行为不同

转载 作者:太空狗 更新时间:2023-10-30 01:23:44 26 4
gpt4 key购买 nike

文件名如下:

filename = u"/direc/tories/español.jpg"

并使用 open() 作为:

fp = open(filename, "rb")

这将在 OSX (10.7) 上正确打开文件,但在 Ubuntu 11.04 上,open() 函数将尝试打开 u"espa\xf1ol.jpg",这将失败并显示IO错误。

在尝试解决这个问题的过程中,我检查了两个系统上的 sys.getfilesystemencoding(),都设置为 utf-8(尽管 Ubuntu 报告大写,即 UTF-8,而不是确定这是否相关)。我还在 python 文件中设置了 # -*- coding: utf-8 -*- ,但我确信这只会影响文件本身的编码,不会影响任何外部函数或 python处理系统资源。该文件存在于两个系统上,并且正确显示了 eñe。

最后的问题是:如何在Ubuntu系统上打开español.jpg文件?

编辑:español.jpg 字符串实际上是通过 Django 的 ORM (ImageFileField) 来自数据库,但当我处理它并看到行为差异时,我有一个单一的 unicode 字符串,它是文件的绝对路径。

最佳答案

下面的这个应该适用于这两种情况:

fp = open(filename.encode(sys.getfilesystemencoding()), "rb")

关于不同操作系统的 Python open() unicode 文件名行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9500173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com