鱼C论坛

 找回密码
 立即注册
查看: 2575|回复: 5

[已解决]请问 index = pos 那一行是什么意思呢,大佬能详细的解释一下吗?

[复制链接]
发表于 2020-7-15 22:53:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 孜然爱爱 于 2020-7-15 22:55 编辑

def get_suffix(filename, has_dot=False):

    """
    获取文件名的后缀名

    :param filename: 文件名
    :param has_dot: 返回的后缀名是否需要带点
    :return: 文件的后缀名
    """
    pos = filename.rfind('.')
    if 0 < pos < len(filename) - 1:
        index = pos if has_dot else pos + 1
        return filename[index:]
    else:
        return ''

这个代码除了    pos = filename.rfind('.') 看明白了之外其他的都不太懂
请大神们解答一下,万分感谢!!
最佳答案
2020-7-15 23:09:58
[b]



这里的 has_dot 参数就是为了返回的后缀是否带 .

当 has_dot 为 True 时候,返回的后缀带 .   比如  .txt    .py

当 has_dot 为 False 时候,返回的后缀不带 .   比如  txt    py
def get_suffix(filename, has_dot=False):

    """
    获取文件名的后缀名

    :param filename: 文件名
    :param has_dot: 返回的后缀名是否需要带点
    :return: 文件的后缀名
    """
    pos = filename.rfind('.')     # 从右往左获取 . 的位置参数
    if 0 < pos < len(filename) - 1:  # 只要有找到 . 返回的值一定大于 -1
        index = pos if has_dot else pos + 1 # 三元运算符,如果 has_dot 为 True ,那么返回 pos ,反之返回 pos + 1
        # 其实这个参数的作用就是是否保留 . 如果index = pos + 1 那么就不保留 . 反之如果返回的是 index = pos 那么保留 .
        return filename[index:]   
        # 返回后缀,当 has_dot 参数为 True 时候返回带 . 的后缀
        # 当 has_dot 参数为 False 时候返回不带 . 的后缀
    else:
        return ''  # 这个就是当 pos = -1的时候 也就是没找到 . 也就没有文件后缀,返回空字符串



[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-15 23:09:58 | 显示全部楼层    本楼为最佳答案   
[b]



这里的 has_dot 参数就是为了返回的后缀是否带 .

当 has_dot 为 True 时候,返回的后缀带 .   比如  .txt    .py

当 has_dot 为 False 时候,返回的后缀不带 .   比如  txt    py
def get_suffix(filename, has_dot=False):

    """
    获取文件名的后缀名

    :param filename: 文件名
    :param has_dot: 返回的后缀名是否需要带点
    :return: 文件的后缀名
    """
    pos = filename.rfind('.')     # 从右往左获取 . 的位置参数
    if 0 < pos < len(filename) - 1:  # 只要有找到 . 返回的值一定大于 -1
        index = pos if has_dot else pos + 1 # 三元运算符,如果 has_dot 为 True ,那么返回 pos ,反之返回 pos + 1
        # 其实这个参数的作用就是是否保留 . 如果index = pos + 1 那么就不保留 . 反之如果返回的是 index = pos 那么保留 .
        return filename[index:]   
        # 返回后缀,当 has_dot 参数为 True 时候返回带 . 的后缀
        # 当 has_dot 参数为 False 时候返回不带 . 的后缀
    else:
        return ''  # 这个就是当 pos = -1的时候 也就是没找到 . 也就没有文件后缀,返回空字符串



[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-15 23:31:32 | 显示全部楼层
请问大佬:从那面的index可知,rfind('.')应该是从左往右 ‘.’ 的位置数,那为什么说是从右往左获取 . 的位置参数呢?
比如我有一个文件名是1234567.py,从右往左获取 . 的位置不就是2了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-15 23:32:44 | 显示全部楼层
Twilight6 发表于 2020-7-15 23:09
这里的 has_dot 参数就是为了返回的后缀是否带 .

当 has_dot 为 True 时候,返回的后缀带 .    ...


请问大佬:从那面的index可知,rfind('.')应该是从左往右 ‘.’ 的位置数,那为什么说是从右往左获取 . 的位置参数呢?
比如我有一个文件名是1234567.py,从右往左获取 . 的位置不就是2了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-15 23:54:00 | 显示全部楼层
孜然爱爱 发表于 2020-7-15 23:32
请问大佬:从那面的index可知,rfind('.')应该是从左往右 ‘.’ 的位置数,那为什么说是从右往左获取 . ...



位置参数都是固定的,而不是看你是哪个开始算起的,位置参数都是从左往右正索引从 0 开始

负数索引从右往左 -1 开始
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-16 09:43:25 | 显示全部楼层
Twilight6 发表于 2020-7-15 23:54
位置参数都是固定的,而不是看你是哪个开始算起的,位置参数都是从左往右正索引从 0 开始

负数索 ...

明白啦,谢谢大神!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 23:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表