Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何将第一个目录从路径中分离出来(例如home/tom/cat>>tom/cat>>cat)?_Python_Linux_Python 2.7_Google Drive Api - Fatal编程技术网

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

在python中,如何将第一个目录从路径中分离出来(例如home/tom/cat>>tom/cat>>cat)?,python,linux,python-2.7,google-drive-api,Python,Linux,Python 2.7,Google Drive Api,作为标题中的示例,我希望得到以下结果: 目录:home/tom/cat 第一组:汤姆/猫 第二次切割:/cat 最后一刻:/ 如何在python中实现这一点?这就是您想要的: In [101]: dir = "home/tom/cat" In [102]: dir.split('/') Out[102]: ['home', 'tom', 'cat'] 您可能还希望在os.path.sep上进行拆分以实现跨平台兼容这就是您想要的: In [101]: dir = "home/tom/cat"

作为标题中的示例,我希望得到以下结果:

目录:home/tom/cat

第一组:汤姆/猫

第二次切割:/cat

最后一刻:/


如何在python中实现这一点?

这就是您想要的:

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

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

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

这就是您想要的:

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

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

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

比在“/”上进行拆分更安全:

In [135]: import os

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

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

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

In [135]: import os

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

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

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

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

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

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

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

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

您可以拆分并重新加入操作系统模块:

import os

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

您可以拆分并重新加入操作系统模块:

import os

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

我可能会使用这样的方法来获得每个步骤的输出:

import os

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

    print base

我可能会使用这样的方法来获得每个步骤的输出:

import os

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

    print base

这就是你要找的吗?假设字符串看起来像这样,即没有前导斜杠,可以尝试使用生成器。请注意,这与上面的输出不匹配,因为我不确定为什么第一次传递将返回tom/cat,而第二次传递将返回前面有斜杠的/cat。如果这是您想要的,您可以修改它以生成一个“默认值”,例如/while循环完成时。如果字符串包含前导/,则可以通过从拆分中剥离空元素进行调整:

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

这就是你要找的吗?假设字符串看起来像这样,即没有前导斜杠,可以尝试使用生成器。请注意,这与上面的输出不匹配,因为我不确定为什么第一次传递将返回tom/cat,而第二次传递将返回前面有斜杠的/cat。如果这是您想要的,您可以修改它以生成一个“默认值”,例如/while循环完成时。如果字符串包含前导/,则可以通过从拆分中剥离空元素进行调整:

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

这里有一个我在其他地方没有看到的清晰答案:

>>> 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可以在第一次拆分时拆分字符串。

这里有一个清晰的答案,我在其他地方没有看到:

>>> 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'
拆分可以在第一次拆分时拆分字符串