我有这个目录树:
C:\A\B\C\D\E\F\myfile.py
我想为我的软件包插入一个目录,如下所示:
import sys
local_package_dir = 'C:\A\B\C\PythonPackages'
sys.path.insert(0, local_package_dir)
我的问题是很多人都在使用各种驱动器名称(D:,E:等)
如何动态遍历目录并转到A\B\C
而不关心调用根级驱动器的内容?
我知道__file__
,但os
功能的哪种组合可以帮助我达到正确的水平?
答案 0 :(得分:1)
看看pathlib。它是os.path
您可以将路径用作对象。 .parts会有你需要的东西。
import pathlib
p = pathlib.PureWindowsPath('c:/Program Files/PSF')
>>> p.parts
('c:\\', 'Program Files', 'PSF')
p = pathlib.PureWindowsPath('c:/A/B/C/D').parts[1:]
>>> -p.parts
('A', 'B', 'C', 'D')
答案 1 :(得分:-1)
您可以使用os.path.pardir
作为父目录的引用(主要是..
),然后使用os.path.join()
以相对方式提升您的路径,最后{{3} }规范你的道路,例如从C:\\A\\B\\C\\D\\E\\F\\myfile.py
到C:\\A\\B\\C
您可以执行以下操作:
current_file = "C:\\A\\B\\C\\D\\E\\F\\myfile.py" # or __file__ if running from myfile.py
path = os.path.dirname(current_file) # get the file's directory
c_dir = os.path.normpath(os.path.join(path, os.path.pardir, os.path.pardir, os.path.pardir))
# C:\A\B\C
在Python 3.4+上,您还可以使用os.path.normpath()
使这些平凡的路径操作更具可忍性。