(Python 2.6)
我有一些代码可以根据客户端名称进行一些自定义。
它的确是这样的:
custom_module = __import__("some.module.company_inc")
只要我们的客户拥有ascii-only名称,这种方法就可以正常工作。
我想使这段代码也适用于非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也很高兴知道)
答案 0 :(得分:1)
严格地说,sys.getfilesystemencoding()
可能会在某些情况下返回None
(例如,如果未设置LANG
)。所以回退到“utf-8”以允许这种(相当不可能的)可能性可能会稍微安全一些:
encoding = sys.getfilesystemencoding() or 'utf-8'
这将覆盖99.9%的案件。对于其余的,我只是允许应用程序引发一个异常(因为它正是它),然后使用适当的信息性错误消息进行优雅的拯救。