相关疑难解决方法(0)

跨平台拆分python中的路径

我想要一些效果与此相同的东西:

>>> path = "/foo/bar/baz/file"
>>> path_split = path.rsplit('/')[1:]
>>> path_split
['foo', 'bar', 'baz', 'file']
Run Code Online (Sandbox Code Playgroud)

但这也适用于Windows路径.我知道有一个os.path.split()但是没有做我想做的事情,我没有看到任何事情.

python

19
推荐指数
4
解决办法
2万
查看次数

如何确定路径是否是另一个路径的子目录?

我得到了一个路径列表,我需要检查其中的文件.当然,如果给我一个root和一个子目录,则不需要处理子目录.例如

c:\test  // process this
c:\test\pics // do not process this
c:\test2 // process this
Run Code Online (Sandbox Code Playgroud)

如何判断(跨平台)路径不是另一个路径的子目录.我希望这是跨平台的,并且我不担心符号链接,只要它们不是循环的(更糟糕的是我最终处理数据两次).

更新:这是我最终使用的代码,感谢@FJ

   def unique_path_roots(paths):
    visited = set()
    paths = list(set(paths))

    for path in sorted(paths,key=cmp_to_key(locale.strcoll)):
        path = normcase(normpath(realpath(path)))

        head, tail = os.path.split(path)
        while head and tail:
            if head in visited:
                break
            head, tail = os.path.split(head)
        else:
            yield path
            visited.add(path)
Run Code Online (Sandbox Code Playgroud)

python file

6
推荐指数
2
解决办法
4764
查看次数

Python:如何检查路径是否是子路径

让我们说我有这些路径:

/tmp/a
/tmp/abc
/tmp/abc/d/my_file.py
Run Code Online (Sandbox Code Playgroud)

我怎么能检查是否/tmp/abc/d/my_file.py是一个子路径/tmp/abc?我试过了:

file_path.startswith(dir_path)
Run Code Online (Sandbox Code Playgroud)

但它返回True/tmp/a目录,而my_file.py不是它.

python directory python-2.7

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×3

directory ×1

file ×1

python-2.7 ×1