linux 如何在python中将第一个目录从路径中拆分出来(如home/tom/cat>>tom/cat>>cat)?

jk9hmnmh  于 2023-03-22  发布在  Linux
关注(0)|答案(8)|浏览(121)

作为标题的例子,我想要的结果:
方向:home/tom/cat
第一次切割:tom/cat
第二次切割:/cat
最后切割:/
如何在Python中实现?

ars1skjm

ars1skjm1#

这是你要找的吗

In [101]: dir = "home/tom/cat"

In [102]: dir.split('/')
Out[102]: ['home', 'tom', 'cat']

您可能还希望在os.path.sep上进行拆分,以实现跨平台兼容

eoigrqb6

eoigrqb62#

这是你要找的吗?假设你的弦看起来像那样(即没有前导斜线),你可以尝试一个生成器。请注意,这与上面的输出不匹配,因为我不确定为什么第一次传递会返回tom/cat,而第二次传递会返回/cat(前面有斜杠)。你可以修改这个以产生一个'default'(如/),如果这是你想要的。如果你的字符串将包括一个前导/,你可以通过从分割中剥离空元素来调整:

In [1]: def PathSplit(s):
   ...:     split_len = len(s.split('/'))
   ...:     yield s
   ...:     if split_len > 1:
   ...:         while split_len > 1:
   ...:             splitter = s.split('/', 1)[1]
   ...:             yield splitter
   ...:             s = splitter
   ...:             split_len = len(s.split('/'))
   ...:
   ...:

In [2]: for i in PathSplit('home/tom/cat'):
   ...:     print i
   ...:
   ...:
home/tom/cat
tom/cat
cat

In [3]: for i in PathSplit('home/tom/cat/another/long/dir'):
   ...:     print i
   ...:
   ...:
home/tom/cat/another/long/dir
tom/cat/another/long/dir
cat/another/long/dir
another/long/dir
long/dir
dir
z9zf31ra

z9zf31ra3#

import os

def split_path(s):
    while os.sep in s:
        rv, s = s.split(os.sep, 1)
        yield s

for split in split_path("home/tom/cat"):
    print(split)

# prints
tom/cat
cat
az31mfrm

az31mfrm4#

比在'/'上拆分更安全的方法:

In [135]: import os

In [136]: dir = '/home/tom/cat'

In [137]: os.path.basename(dir)
Out[137]: 'cat'
gxwragnw

gxwragnw5#

这将剪切字符串中的第一个目录:

dir = 'home/tom/cat'
parts = dir.split('/')
print '/'.join(parts[1:])

它将字符串拆分成一个dir数组,然后将除第一个目录之外的所有目录再次连接在一起。

hk8txs48

hk8txs486#

您可以拆分并重新加入os模块:

import os

def cutPath(path):
    return os.path.join(os.path.split(path)[1:])
dfddblmv

dfddblmv7#

我可能会使用类似这样的代码来获取每一步的输出:

import os

path = "home/tom/cat"
while path:
    base = os.path.basename(path)
    path = path.rstrip(base)

    print base
7jmck4yq

7jmck4yq8#

这是一个我在其他地方没有看到的简单答案:

>>> mypath="first/second/third/fourth/fifth.txt"
>>> mypath.split('/',1)
['first', 'second/third/fourth/fifth.txt']
>>> mypath.split('/',1)[1]
'second/third/fourth/fifth.txt'

Split可以在第一次拆分时拆分字符串。

相关问题