gpt4 book ai didi

python - 在 Python 2 中安全导入具有 Unicode 名称的模块

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:30 25 4
gpt4 key购买 nike

(Python 2.6)

我有一些代码可以根据客户端名称进行一些自定义。

它的作用是这样的:

custom_module = __import__("some.module.company_inc")

只要我们的客户拥有纯 ASCII 名称,此方法就可以正常工作。

我想让这段代码也能对非 ASCII 公司名称正常工作,例如

custom_module = __import__(u"some.module.unicóde_company_inc")

但是,__import__ 只接受字节,所以我需要先对其进行编码。

__import__(u"some.module.unicóde_company_inc".encode(sys.getfilesystemencoding()) 是否保证在所有系统上工作(当然假设文件系统编码支持“ó”)?这是执行此操作的正确方法吗?(假设我不静态地知道该框使用的编码)

我对linux系统最感兴趣。 (但如果了解非 Linux 系统也很好)

最佳答案

严格来说,有可能 sys.getfilesystemencoding()在某些情况下(例如,如果未设置 LANG),可以返回 None。因此,回退到“utf-8”可能会更安全一些,以允许这种(不太可能)的可能性:

    encoding = sys.getfilesystemencoding() or 'utf-8'

这将覆盖 99.9% 的情况。对于其余的,我只允许应用程序引发异常(因为这正是它的本质),然后使用适当的信息性错误消息优雅地退出。

关于python - 在 Python 2 中安全导入具有 Unicode 名称的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999307/

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