这里的解决方案取决于上下文:您希望为用户提供多少功率?你有多信任他们输入合理的东西?结果是您想获得相对路径还是绝对路径?
>选项1:为用户供电
让用户做他们想做的任何事情,并让他们自己负责:
result = os.path.join(mr, cn, lp, vin)
# result: '/data/dir/var'
这为用户提供了最大程度的控制.
>选项2:强制一切都是相对的
如果要强制每个单独的段都是相对路径,则无法绕过任何前导路径分隔符.
seps = r'\/' # backslash for windows, slash for all platforms
fragments = [part.strip(seps) for part in [mr, cn, lp, vin]]
result = os.path.join(*fragments)
# result: 'mapr/12.12.12/data/dir/var'
如果您需要将结果作为绝对路径,请将其与根目录连接:
seps = r'\/'
root = '/var/log'
fragments = [part.strip(seps) for part in [mr, cn, lp, vin]]
result = os.path.join(root, *fragments)
# result: '/var/log/mapr/12.12.12/data/dir/var'