Skip to main content
 首页 » 编程设计

python之如何在遵守 PEP8 的同时编写长 os.path.join 链

2025年05月04日15lidabo

我正在使用一个长链 os.path.join() 生成路径(它确保该路径适用于任何操作系统)。

"metadata": os.path.join(BASE_DIR, os.path.join('ServiceProvider',os.path.join('config', os.path.join('metadata',os.path.join('gmail_metadata.xml'))))), 

我想按照 PEP8 的方式将它分解成多行,但我似乎无法做到这一点。

我尝试了几种方法:

"metadata": os.path.join(BASE_DIR,  
            os.path.join('ServiceProvider', 
            os.path.join('config',  
            os.path.join('metadata', 
            os.path.join('gmail_metadata.xml'))))), 

会得到 PEP8 错误 continuation line under-indented for visual indentpep8(E128)

和

"metadata": os.path.join(BASE_DIR, os.path.join('ServiceProvider', 
                                                    os.path.join('config', os.path.join('metadata', 
                                                                                        os.path.join('gmail_metadata.xml'))))), 

这实际上是 PEP8 自动修复所做的,我遇到了 line too long 错误。

如果在这种情况下无法修复 PEP8 错误,我仍然想知道你会怎么做!

请您参考如下方法:

您可以列出所有要加入的路径,并使用列表解包(PEP-3132 中的更多详细信息来解包所有参数并将其传递给 os.path.join

import os 
 
#List of paths 
li = [BASE_PATH,'ServiceProvider', 'config', 'metadata','gmail_metadata.xml'] 
 
#Join all paths by unpacking the list 
path = os.path.join(*li) 
print(path)