python - python中返回文件扩展名的函数

标签 python python-3.x file

我是 Python 初学者。我想了解以下函数,它返回该文件的扩展名:

def get_extn(filename):
    return filename[filename.rfind('.'):][1:]

我不明白为什么rfind函数中有括号[]而没有(),为什么括号前有:和[1:]。我很感激你的解释。

最佳答案

您在这里看到的是一个具有两次切片语法的函数。对于支持切片语法的对象,可以这样写:

object[f:t]

带有 ft 索引。然后,您将获得一个以 f 开头并以 t 结尾的子序列(t 是唯一的)。如果未提供 ft,这通常意味着我们从头开始切片,或者从头到尾切片。

你问题中的函数有点神秘,实际上等同于:

def get_extn(filename):
    f = filename.rfind('.')
    filename = filename[f:]
    return filename[1:]

所以首先我们获得最后一个点的索引,然后我们构造一个从 f 开始的子串,最后我们从那个从索引 1 开始的子串构造一个子串(从而删除第一个字符是 '.').

关于python - python中返回文件扩展名的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44837012/

相关文章:

multithreading - 在多核机器上加速 Pandas

python-3.x - 如何在 Python 中创建和导入自定义模块

java - Ant + 保留控制值

Java文件I/O,如何更改所选目录?

java - 在 Java 中,如何递归列出文件夹中与扩展名数组不匹配的所有文件?

Python - 通过连接坐标查找正方形的数量

python - 无法将每个子列表中包含 2 个元素的列表转换为单个字符串

python - Selenium select_by_value 然后打印选项文本

python - weawve导入错误: DLL load failed: %1 is not a valid Win32 application Anaconda64 MINGW64

python-3.x - 如何确保按给定的顺序处理所有命令(和错误)