在python2中安全地导入具有Unicode名称的模块

2024-05-23 19:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

(Python 2.6)

我有一些代码可以根据客户机名称进行定制。在

它是这样做的:

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

只要我们的客户机只有ascii名称,这种方法就可以正常工作。在

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

{cd2}

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

__import__(u"some.module.unicóde_company_inc".encode(sys.getfilesystemencoding())是否保证能在所有系统上工作(假设文件系统编码当然支持“o”)?这样做对吗?(假设我不知道盒子使用的编码)

我对linux系统最感兴趣。(但对于非linux系统也很好)


Tags: 方法代码import名称编码客户机linux系统
1条回答
网友
1楼 · 发布于 2024-05-23 19:21:37

严格地说,在某些情况下,^{}可能返回{}(例如,如果LANG未设置)。因此,考虑到这种(不太可能)的可能性,退回到“utf-8”可能会稍微安全一些:

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

这将覆盖99.9%的病例。对于其余部分,我只允许应用程序引发一个异常(因为它就是这样),然后优雅地退出,并提供适当的信息错误消息。在

相关问题 更多 >