Python路径分裂。风格和最佳实践

2024-03-29 12:19:19 发布

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

我有一个工作模块,我试图把一个统一的yaml文件放在根目录下,供所有子模块使用。你知道吗

我有一个3层深的子模块配置S.yaml在根上。你知道吗

现在,我通过硬编码os.path.split()行访问根目录,级别与neccession相同,我想知道是否有一种更pythonic的方法,或者更健壮的方法指向目录顶部。你知道吗

我在窗户上。python3.4,使用py2exe构建。你知道吗

文件夹结构如下。你知道吗

  • dps\U工具

    • 纽约民主党

      • 编辑
        • 分贝
          • 你知道吗会话.py你知道吗
    • winsrv64版本

      • 你知道吗编辑服务.py你知道吗

还有更多

你知道吗会话.py段

 if hasattr(sys, 'frozen'):
    current_directory =  os.path.split(sys.executable)[0]
else:
   current_directory = os.path.split(os.path.split(os.path.split(os.path.dirname(
    os.path.abspath("__file__")))[0])[0])[0]

你知道吗编辑服务.py你知道吗

if hasattr(sys, 'frozen'):
    basis = sys.executable
else:
    basis = os.path.dirname(os.path.abspath("__file__"))

current_directory = os.path.split(basis)[0]

有没有更一致的方法?或者可能是一个单线Python方式访问目录顶端?(即使我在windows上,目录top不是c:)


Tags: 模块path方法py目录编辑yamlif
1条回答
网友
1楼 · 发布于 2024-03-29 12:19:19

首先,注意os.path.dirname(filepath)等价于os.path.split(filepath)[0]。你知道吗

但是如果你需要提升几个级别,我会使用os.path.normpath(os.path.join(filepath, '..', '..', '..'))。我觉得它更可读。你知道吗

EDIT:ntpathnormpath也将用输入路径中的\\替换/,因此上面的行可以重新写入os.path.normpath(os.path.join(filepath, '../../..')),并且它是可移植的。你知道吗

相关问题 更多 >