如何使用 pathlib 切换路径的基础?
How to switch the base of a path using pathlib?
我正在尝试通过删除基础来获取路径的一部分,目前这就是我正在做的:
original = '/tmp/asd/asdqwe/file'
base = '/tmp/asd/'
wanted_part = original.strip(base)
不幸的是,我得到的不是 'asdqwe/file'
,而是 'qwefile'
,出于某种原因,strip 工作起来很奇怪,我不明白。
我的问题的最佳解决方案是使用 pathlib.Path
,因为我的函数将其属性作为路径获取,而 return 值在添加新的基本路径后将修剪后的字符串转换为路径。
但是如果没有可用的 pathlib 解决方案,一个字符串也很好,目前我正在处理一个奇怪的错误...
您误解了 str.strip
的工作原理。该方法将从目标字符串的 "edges" 中删除参数中指定的所有字符,而不管它们指定的顺序如何:
original = '/tmp/asd/asdqwe/file'
base = '/tmp/asd/'
wanted_part = original.strip(base)
print(wanted_part)
# qwe/file
你想做的可能是切片:
wanted_part = original[len(base):]
print(wanted_part)
# asdqwe/file
或者,使用 pathlib
:
from pathlib import Path
original = Path('/tmp/asd/asdqwe/file')
base = Path('/tmp/asd/')
wanted_part = original.relative_to(base)
print(wanted_part)
# asdqwe/file
strip 将删除一系列字符,而不是字符串前缀或后缀,因此它会继续删除您传递的序列中的任何字符。 Instaed,您可以测试原始文件是否以您的基数开头,如果确实如此,则只需获取字符串的剩余字符,即基数长度之后的字符。
original = '/tmp/asd/asdqwe/file'
base = '/tmp/asd/'
if original.startswith(base):
wanted_part = original[len(base):]
print(wanted_part)
输出
asdqwe/file
我正在尝试通过删除基础来获取路径的一部分,目前这就是我正在做的:
original = '/tmp/asd/asdqwe/file'
base = '/tmp/asd/'
wanted_part = original.strip(base)
不幸的是,我得到的不是 'asdqwe/file'
,而是 'qwefile'
,出于某种原因,strip 工作起来很奇怪,我不明白。
我的问题的最佳解决方案是使用 pathlib.Path
,因为我的函数将其属性作为路径获取,而 return 值在添加新的基本路径后将修剪后的字符串转换为路径。
但是如果没有可用的 pathlib 解决方案,一个字符串也很好,目前我正在处理一个奇怪的错误...
您误解了 str.strip
的工作原理。该方法将从目标字符串的 "edges" 中删除参数中指定的所有字符,而不管它们指定的顺序如何:
original = '/tmp/asd/asdqwe/file'
base = '/tmp/asd/'
wanted_part = original.strip(base)
print(wanted_part)
# qwe/file
你想做的可能是切片:
wanted_part = original[len(base):]
print(wanted_part)
# asdqwe/file
或者,使用 pathlib
:
from pathlib import Path
original = Path('/tmp/asd/asdqwe/file')
base = Path('/tmp/asd/')
wanted_part = original.relative_to(base)
print(wanted_part)
# asdqwe/file
strip 将删除一系列字符,而不是字符串前缀或后缀,因此它会继续删除您传递的序列中的任何字符。 Instaed,您可以测试原始文件是否以您的基数开头,如果确实如此,则只需获取字符串的剩余字符,即基数长度之后的字符。
original = '/tmp/asd/asdqwe/file'
base = '/tmp/asd/'
if original.startswith(base):
wanted_part = original[len(base):]
print(wanted_part)
输出
asdqwe/file