首页 > 解决方案 > 当右手边可能是/-前缀时,是否有一种优雅的方式来使用 os.path.join() ?

问题描述

在下面的代码中,context._arguments['ConfigFile']返回一个类似的字符串'/path/file.py'(我无法更改),但由于工作方式os.path.join(),我需要至少删除第一个 /。

注意:在我的用例__file__中,将始终位于远离配置文件的适当位置。

我也考虑过给它,context._arguments['ConfigFile'][1:]但我认为它不那么健壮。

config_file = os.path.join(
  os.path.dirname(os.path.abspath(__file__)), 
  *context._arguments['ConfigFile'].split(os.path.sep))

我希望会有一些更优雅的东西,但也许处理路径永远不会。我正在使用 Python 2.7,但为了完整起见,我愿意听取 Python 3 的答案。

标签: pythonpython-2.7

解决方案


如果您使用 Python 3,则可以从该pathlib软件包中受益:

from pathlib import Path

file_path = '/path/file.py'

config_file = Path(__file__).parent / file_path.lstrip('/')

print(config_file)
# /Users/darius/repos/stackoverflow/questions/path/file.py

如果您使用 Python 2,您可以安装pathlib2( pip install pathlib2),它是标准pathlib包的后向端口。要匹配模块名称,您可以使用 重命名导入import pathlib2 as pathlib


推荐阅读