gpt4 book ai didi

具有未知路径分隔符的路径名的 Python native 解析

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:49 25 4
gpt4 key购买 nike

我正在为一个配置文件开发一个解析器,想知道是否有 python native 方法来处理可以为任何操作系统创建的字符串路径名。

例子:

pathName1 = r".../This/is/a/relative/path"
pathName2 = r"...\This\is\a\relative\path"

将被解释为相等,并且可用于访问正在执行代码的操作系统上的文件。

现在我有一个正则表达式 hack,它用 os.path.sep 替换了有问题的分隔符,但我认为这一定是一个足够普遍的问题,可能有一个 python-native 方法来做到这一点。

最佳答案

@Andrew Sledge 在使用 os.path.join 生成路径方面是正确的,但是如果您遇到一个可能是任何一种样式的字符串并且想要对其进行规范化,这里有一个实现方式:

import re
import os
def normalize_path(path):
return os.path.normpath(os.sep.join(re.split(r'\\|/', path)))

用法:

>>> normalize_path("/usr/local/share/myfile")
'/usr/local/share/myfile'
>>> normalize_path("C:\My Documents\Users/music.mp3")
'C:/My Documents/Users/music.mp3'
>>> normalize_path("~/Documents///report.pdf")
'~/Documents/report.pdf'
>>> normalize_path("/tmp/subdir/subsubdir/.././//")
'/tmp/subdir'
>>> normalize_path("../Photos/.")
'../Photos'

对于用法,您只需使用普通的 os.path东西:

>>> os.path.abspath(normalize_path("../Photos/."))
'/private/tmp/Photos'
>>> os.path.expanduser(normalize_path("~/Documents///report.pdf"))
'/Users/matt/Documents/report.pdf'
>>> os.path.join(normalize_path("/tmp//./subdir"), "myfile.txt")
'/tmp/subdir/myfile.txt'
>>> os.path.dirname(normalize_path("~/Documents///report.pdf"))
'~/Documents'
>>> os.path.basename(normalize_path("~/Documents///report.pdf"))
'report.pdf'

关于具有未知路径分隔符的路径名的 Python native 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20712346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com