繁体   English   中英

Pythonic路径拆分。 风格和最佳实践

[英]Pythonic path splitting. Style, and best practice

我有一个工作模块,我试图将统一的yaml文件放在ROOT目录中,以供所有子模块使用。

我有一个3级深的子模块,configs.yaml位于根目录。

现在,我通过对os.path.split()行进行硬编码来访问根目录,所需的级别尽可能多,而我想知道是否有更多的pythonic或更强健的指向目录顶部的方式。

我在窗户上。 Python 3.4,使用py2exe进行构建。

文件夹结构如下。

  • dps_tools

    • 纽约市

      • 编辑
        • D b
          • session.py
    • winsrv64

      • editservice.py

和更多

session.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]

editservice.py

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

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

有没有更一致的方法? 还是单行pythonic方式访问目录顶部? (即使我在Windows上,并且目录的顶部也不是c :)

首先,请注意os.path.dirname(filepath)等效于os.path.split(filepath)[0]

但是,如果您需要升级几个级别,可以使用os.path.normpath(os.path.join(filepath, '..', '..', '..')) 恕我直言,它更具可读性。

编辑: ntpathnormpath还将在输入路径中用\\\\替换/ ,因此可以将上面的行重写为os.path.normpath(os.path.join(filepath, '../../..')) ,而且它是便携式的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM