请问 index = pos 那一行是什么意思呢,大佬能详细的解释一下吗?
本帖最后由 孜然爱爱 于 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
else:
return ''
这个代码除了 pos = filename.rfind('.') 看明白了之外其他的都不太懂
请大神们解答一下,万分感谢!!
这里的 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
# 返回后缀,当 has_dot 参数为 True 时候返回带 . 的后缀
# 当 has_dot 参数为 False 时候返回不带 . 的后缀
else:
return ''# 这个就是当 pos = -1的时候 也就是没找到 . 也就没有文件后缀,返回空字符串
请问大佬:从那面的index可知,rfind('.')应该是从左往右 ‘.’ 的位置数,那为什么说是从右往左获取 . 的位置参数呢?
比如我有一个文件名是1234567.py,从右往左获取 . 的位置不就是2了吗? Twilight6 发表于 2020-7-15 23:09
这里的 has_dot 参数就是为了返回的后缀是否带 .
当 has_dot 为 True 时候,返回的后缀带 . ...
请问大佬:从那面的index可知,rfind('.')应该是从左往右 ‘.’ 的位置数,那为什么说是从右往左获取 . 的位置参数呢?
比如我有一个文件名是1234567.py,从右往左获取 . 的位置不就是2了吗? 孜然爱爱 发表于 2020-7-15 23:32
请问大佬:从那面的index可知,rfind('.')应该是从左往右 ‘.’ 的位置数,那为什么说是从右往左获取 . ...
位置参数都是固定的,而不是看你是哪个开始算起的,位置参数都是从左往右正索引从 0 开始
负数索引从右往左 -1 开始 Twilight6 发表于 2020-7-15 23:54
位置参数都是固定的,而不是看你是哪个开始算起的,位置参数都是从左往右正索引从 0 开始
负数索 ...
明白啦,谢谢大神!
页:
[1]