Python 分文

标签 python path operating-system separator

在 python 中,为什么 os.path.splitext 使用 '.'作为扩展分隔符而不是 os.extsep?

最佳答案

os.extsep 是通过导入 os.path.extsep 定义的。但你是对的,os.path.splitext() 总是使用 .,不管 os.path.extsep:

来自 os.py (3.2.2):

from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,
    devnull)

来自ntpath.py(变成os.path)

extsep = '.'
[...]
def _get_dot(path):
    if isinstance(path, bytes):
        return b'.'
    else:
        return '.'   # instead of return extsep! [Comment by me, not in source]
[...]
def splitext(p):
    return genericpath._splitext(p, _get_sep(p), _get_altsep(p),
                                 _get_dot(p))

此外,来自genericpath.py:

def _get_dot(path):
    if isinstance(path, bytes):
        return b'.'
    else:
        return '.'

所以 os.path() 实际上确实定义了两次扩展分隔符。

现在它可能并不重要,因为它不会很快改变(无论如何在所有支持的平台上都是一样的)。但在某种程度上,它违反了 DRY 原则。

关于Python 分文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7445804/

相关文章:

process - 为什么 I/O 绑定(bind)进程更快?

c - 内核(以及一般的操作系统)是如何用 C 编写的?

python - Django 干草堆测试

java - 重定向时请求的资源(/xxx.html)不可用

debugging - 如何调试操作系统?

java - 正则表达式:Java 包的完整路径

python - python os.path.abspath的误解

python - 如何使用 python 进行 tar 备份

python - 如何从外部访问本地 Django 网络服务器

python - python 中递归地集合中的所有子集(Nonetype 错误)