在Python中从文件名中提取扩展名
有没有从文件名中提取扩展名的函数?
Is there a function to extract the extension from a filename?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有没有从文件名中提取扩展名的函数?
Is there a function to extract the extension from a filename?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(30)
使用
os.path.splitext
:与大多数手动字符串分割尝试不同,
os.path.splitext
会正确地将/a/bc/d
视为没有扩展名,而不是具有扩展名 < code>.c/d,它会将.bashrc
视为没有扩展名,而不是具有扩展名.bashrc
:Use
os.path.splitext
:Unlike most manual string-splitting attempts,
os.path.splitext
will correctly treat/a/b.c/d
as having no extension instead of having extension.c/d
, and it will treat.bashrc
as having no extension instead of having extension.bashrc
:3.4 版中的新功能。
我很惊讶没有人提到< code>pathlib 然而,
pathlib
太棒了!New in version 3.4.
I'm surprised no one has mentioned
pathlib
yet,pathlib
IS awesome!仅获取扩展名的文本,不带点。
To get only the text of the extension, without the dot.
对于简单的用例,一个选项可能会从点中分离出来:
当文件没有扩展名时不会出错:
但你必须小心:
也不适用于 Unix 系统中的隐藏文件:
对于一般用途,更喜欢
os.path.splitext
For simple use cases one option may be splitting from dot:
No error when file doesn't have an extension:
But you must be careful:
Also will not work with hidden files in Unix systems:
For general use, prefer
os.path.splitext
值得在其中添加一个较低的值,这样您就不会发现自己想知道为什么 JPG 没有出现在您的列表中。
worth adding a lower in there so you don't find yourself wondering why the JPG's aren't showing up in your list.
上述任何解决方案都有效,但在 Linux 上我发现扩展字符串末尾有一个换行符,这将阻止匹配成功。 将
strip()
方法添加到末尾。 例如:Any of the solutions above work, but on linux I have found that there is a newline at the end of the extension string which will prevent matches from succeeding. Add the
strip()
method to the end. For example:使用 splitext 时,具有双扩展名的文件会出现问题(例如
file.tar.gz
、file.tar.bz2
等),但应该是:
。 tar.gz
可能的解决方案在此处
With splitext there are problems with files with double extension (e.g.
file.tar.gz
,file.tar.bz2
, etc..)but should be:
.tar.gz
The possible solutions are here
您可以在 pathlib 模块(在 python 3.x 中可用)中找到一些很棒的东西。
You can find some great stuff in pathlib module (available in python 3.x).
只需
加入
所有pathlib后缀
即可。Just
join
allpathlib suffixes
.虽然这是一个老话题,但我想知道为什么没有人提到一个非常简单的 python api,称为 rpartition 在这种情况下:
要获得给定文件绝对路径的扩展名,您可以简单地输入:
example:
will get you: 'csv '
Although it is an old topic, but i wonder why there is none mentioning a very simple api of python called rpartition in this case:
to get extension of a given file absolute path, you can simply type:
example:
will give you: 'csv'
令人惊讶的是,还没有提到这一点:
优点:
作为功能:
Surprised this wasn't mentioned yet:
Benefits:
As function:
您可以在
文件名
上使用split
:这不需要额外的库
You can use a
split
on afilename
:This does not require additional library
在 Python 中从文件名中提取扩展名
Python os 模块 splitext()
splitext() 函数将文件路径拆分为具有两个值的元组 - 根和扩展名。
使用Pathlib模块获取文件扩展名
Pathlib模块获取文件扩展名
Extracting extension from filename in Python
Python os module splitext()
splitext() function splits the file path into a tuple having two values – root and extension.
Get File Extension using Pathlib Module
Pathlib module to get the file extension
即使这个问题已经得到解答,我也会在正则表达式中添加解决方案。
Even this question is already answered I'd add the solution in Regex.
这是一种直接的字符串表示技术:
我看到提到了很多解决方案,但我认为大多数都在考虑拆分。
然而,Split 在每次出现“.”时都会执行此操作。 。
您更愿意寻找的是分区。
This is a direct string representation techniques :
I see a lot of solutions mentioned, but I think most are looking at split.
Split however does it at every occurrence of "." .
What you would rather be looking for is partition.
另一种右分割的解决方案:
Another solution with right split:
您可以使用以下代码来拆分文件名和扩展名。
you can use following code to split file name and extension.
好吧,我知道我迟到了,
这是我的简单解决方案
Well , i know im late
that's my simple solution
如果您喜欢正则表达式,那么这就是真正的一句台词。
即使你有额外的“。”也没关系。 在中间
查看结果:单击此处
A true one-liner, if you like regex.
And it doesn't matter even if you have additional "." in the middle
See here for the result: Click Here
您可以使用 endswith 来识别 python 中的文件扩展名,
如下例所示
You can use endswith to identify the file extension in python
like bellow example
试试这个:
try this:
最简单的获取方法是使用mimtypes,下面是示例:
The easiest way to get is to use mimtypes, below is the example:
我肯定迟到了,但万一有人想在不使用另一个库的情况下实现这一目标:
第二行基本上只是以下代码,但塞进一行:
即使这有效,它也可能不起作用文件类型,特别是
.zshrc
,我建议使用os
的os.path.splitext
函数,示例如下:干杯 :)
I'm definitely late to the party, but in case anyone wanted to achieve this without the use of another library:
The 2nd line is basically just the following code but crammed into one line:
Even though this works, it might not work will all types of files, specifically
.zshrc
, I would recomment usingos
'sos.path.splitext
function, example below:Cheers :)
对于有趣的人来说......只需将扩展名收集在字典中,然后在文件夹中跟踪所有扩展名即可。 然后只需拉出你想要的扩展即可。
For funsies... just collect the extensions in a dict, and track all of them in a folder. Then just pull the extensions you want.
此方法需要字典、列表或集合。 您可以使用内置字符串方法来使用“.endswith”。 这将在文件末尾的列表中搜索名称,只需使用
str.endswith(fileName[index])
即可完成。 这更多的是为了获取和比较扩展。https://docs.python.org/3/library/stdtypes。 html#string-methods
示例 1:
示例 2:
示例 3:
示例 4
带有输出的示例 5、6、7
示例 8
This method will require a dictonary, list, or set. you can just use ".endswith" using built in string methods. This will search for name in list at end of file and can be done with just
str.endswith(fileName[index])
. This is more for getting and comparing extensions.https://docs.python.org/3/library/stdtypes.html#string-methods
Example 1:
Example 2:
Example 3:
Example 4
Examples 5, 6, 7 with output
Example 8
在这里,如果您想提取最后一个文件扩展名(如果它有多个
输出为 mp3),即使只有 1 个扩展名也有效
Here if you want to extract the last file extension if it has multiple
Output is mp3, even works if has only 1 extension name