繁体   English   中英

使用os.path删除路径中的元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM