[英]Pythonic path splitting. Style, and best practice
我有一个工作模块,我试图将统一的yaml文件放在ROOT目录中,以供所有子模块使用。
我有一个3级深的子模块,configs.yaml位于根目录。
现在,我通过对os.path.split()
行进行硬编码来访问根目录,所需的级别尽可能多,而我想知道是否有更多的pythonic或更强健的指向目录顶部的方式。
我在窗户上。 Python 3.4,使用py2exe进行构建。
文件夹结构如下。
dps_tools
纽约市
winsrv64
和更多
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]
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, '..', '..', '..'))
。 恕我直言,它更具可读性。
编辑: ntpath
的normpath
还将在输入路径中用\\\\
替换/
,因此可以将上面的行重写为os.path.normpath(os.path.join(filepath, '../../..'))
,而且它是便携式的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.