[英]Use os.path to remove element in path
我想使用os.path
从给定路径中安全删除第一个元素:
/foo/bar/something
/foo/something
/foo/foo
因此,如果foo在路径中,我想将其删除。 我知道我可以执行此正则表达式,但如果可能的话,我宁愿使用os.path
。
但是,我浏览了文档页面,看不到它如何提供任何方法来执行此操作。
有没有办法,还是我应该对它进行正则表达式 ?
os.path.relpath
不是吗?
>>> a="/foo/bar/boz"
>>> import os
>>> os.path.relpath(a, '/foo')
'bar/boz'
看一下以os.sep
作为参数和os.path.join
str.split
。 首先将路径分成多个部分(foo,bar,某物),因此您可以对它们应用任何列表操作(即,切片第一个元素),而第二个-将它们连接回字符串。
即
import os
paths = ['/foo/bar/something',
'/foo/something',
'/foo/foo',
'foo/spam/ham']
for path in paths:
parts = path.split(os.sep)
# For absolute paths - first item would be empty string,
# ignore it
firstidx = 0 if parts[0] else 1
if parts[firstidx] == 'foo':
parts.pop(firstidx)
print os.path.join(*parts)
这个问题有点令人困惑-我认为您想删除给定路径中所有出现的“ foo”。
import os
paths = ['/foo/bar/something', '/foo/something', '/foo/foo']
remove_item = 'foo'
for path in paths:
new_path = os.sep.join([item for item in path.split(os.sep) if item != remove_item])
print(new_path)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.