python中返回fi的扩展名的函数

2024-10-02 14:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我不明白为什么在rfind函数[]中有方括号而不是()以及为什么在方括号之前有:和[1:]。我很感激你的解释。你知道吗


Tags: 文件函数getreturndeffilename初学者方括号
3条回答

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

object[f:t]

具有ft索引。然后得到一个子序列,该子序列以f开始,以t结束(t是独占的)。如果ft没有提供,那通常意味着我们从开始到结束进行切片。你知道吗

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

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

首先我们得到最后一个点的索引,然后我们构造一个从f开始的子串,最后我们从索引1开始的子串构造一个子串(这样就删除了第一个字符,它是'.')。你知道吗

我建议使用os.path module来处理文件名和路径。你知道吗

示例:

import os.path

for path in ('/tmp/file.txt', 'file.doc', 'file', 'file.a.b.c'):
    basename, extension=os.path.splitext(path)
    print("path: '{}', base: '{}' extension '{}'".format(path,basename,extension))

印刷品:

path: '/tmp/file.txt', base: '/tmp/file' extension '.txt'
path: 'file.doc', base: 'file' extension '.doc'
path: 'file', base: 'file' extension ''
path: 'file.a.b.c', base: 'file.a.b' extension '.c'

您需要从理解python语法开始。你知道吗

方括号访问数组中的元素,圆括号用于调用函数。rfind是一个函数,输入参数“.”,在文件名中查找句点。括号用于检索数组中的元素—文件名中的元素,因此是文件名[],以及数组中的元素。你知道吗

冒号::表示数组中的片。[:]表示整个数组,[1:]表示第一个数组之后的元素。见:Explain slice notation

相关问题 更多 >