在Python中获取具有预定扩展名的文件基本名

普杜布瓦

我有以下字符串:

/path1/path2/foo.bar.qux.txt

我想要做的是通过指定扩展名提取基本名称。如果我将扩展名定义为,.bar.qux.txt则基本名称为“ foo”。然后,如果扩展名为,.qux.txt则基数为:foo.bar

Perl具有以下功能:

use File::Basename;
my $longones = "/path1/path2/foo.bar.qux.txt";
my $base = basename($longones,"*.bar.qux.txt");
print "$base\n";

Python的实现方式是什么?

巴库留

没有内置功能可以满足您的需求。os.path.splitext不允许定义应视为扩展的内容。实际上,basenameperl函数的名称是一个错误的名称,因为* NIX中basename 确实包含扩展名。

但是,您可以结合os.path.basename使用rsplit

>>> import os
>>> os.path.basename('/path1/path2/foo.bar.qux.txt').rsplit('.bar.qux.txt')[0]
'foo'
>>> os.path.basename('/path1/path2/foo.bar.qux.txt').rsplit('.qux.txt')[0]
'foo.bar'

请注意,如果文件名包含扩展名,则可能会得到错误的结果:

>>> os.path.basename('/path1/path2/foo.bar.qux.txt.foo.bar.qux.txt').rsplit('.qux.txt')[0]
'foo.bar'

但是,您始终可以指定一个maxsplitof 1,仅拆分第一个扩展名:

>>> os.path.basename('/path1/path2/foo.bar.qux.txt.foo.bar.qux.txt').rsplit('.qux.txt', maxsplit=1)[0]
'foo.bar.qux.txt.foo.bar'

在python2中,您必须将第二个参数指定为rsplit(text, 1)

或者使用rpartition

>>> os.path.basename('/path1/path2/foo.bar.qux.txt.foo.bar.qux.txt').rpartition('.qux.txt')[0]
'foo.bar.qux.txt.foo.bar'

使用正则表达式的解决方案可能是:

import re

def basename_without_ext(path, ext):
    regex = re.compile('{}$'.format(re.escape(ext)))
    return regex.sub('', os.path.basename(path))

用作:

>>> basename_without_ext('/path1/path2/foo.bar.qux.txt.foo.bar.qux.txt', '.qux.txt')
'foo.bar.qux.txt.foo.bar'
>>> basename_without_ext('/path1/path2/foo.bar.qux.txt', '.bar.qux.txt')
'foo'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用基本名称删除文件扩展名并搜索具有相同名称的文件

来自分类Dev

查找具有给定扩展名的所有文件,这些扩展名的基本名称是父目录的名称

来自分类Dev

Python在具有某些扩展名的目录中获取最新文件

来自分类Dev

将文件扩展名连接到C中的基本名称

来自分类Dev

从相同扩展名但不具有扩展名(MATLAB)的目录中获取文件名

来自分类Dev

获取具有特殊扩展名的文件的TreeView

来自分类Dev

从目录中读取具有Python中相同文件扩展名的多个文件的文件

来自分类Dev

从具有多个扩展名的文件名中删除某些扩展名

来自分类Dev

从文档目录中获取包含相同名称但具有不同扩展名的文件列表。

来自分类Dev

获取具有与基本名称模式匹配的路径的文件名

来自分类Dev

Python 3中具有特定文件扩展名的临时文件

来自分类Dev

Python递归查找具有特定扩展名的文件

来自分类Dev

在MacOS中同步具有不同扩展名的文件

来自分类Dev

从具有特定扩展名的文件中删除行

来自分类Dev

如何从没有扩展名的路径中获取特定文件名python

来自分类Dev

在没有文件扩展名的javascript中获取URL

来自分类Dev

从带有扩展名pem的文件中获取RSAPublicKey

来自分类Dev

从资产文件夹获取仅具有.txt扩展名的文件的文件名

来自分类Dev

如何获取目录树中具有特定文件扩展名的每个文件的目录名称?

来自分类Dev

在JavaScript中获取文件扩展名

来自分类Dev

如何从具有特定扩展名的文件中获取名称并将其用作批处理脚本中的变量?

来自分类Dev

在Python中解析带有“ .data”扩展名的文件?

来自分类Dev

使用具有多个句点的文件获取文件扩展名

来自分类Dev

尝试复制具有指定扩展名的指定路径中的文件并将其替换为新扩展名

来自分类Dev

使用“ for file in”选择多个扩展名,然后获取“ file”的基本名称,然后连接一个扩展名

来自分类Dev

在bash 3.2中复制具有扩展扩展名的多个文件的数组

来自分类Dev

如何列出目录中除具有指定扩展名的文件以外的所有文件?

来自分类Dev

如何删除特定文件夹中具有特定扩展名的所有文件?

来自分类Dev

提取具有扩展名URL的文件名

Related 相关文章

  1. 1

    使用基本名称删除文件扩展名并搜索具有相同名称的文件

  2. 2

    查找具有给定扩展名的所有文件,这些扩展名的基本名称是父目录的名称

  3. 3

    Python在具有某些扩展名的目录中获取最新文件

  4. 4

    将文件扩展名连接到C中的基本名称

  5. 5

    从相同扩展名但不具有扩展名(MATLAB)的目录中获取文件名

  6. 6

    获取具有特殊扩展名的文件的TreeView

  7. 7

    从目录中读取具有Python中相同文件扩展名的多个文件的文件

  8. 8

    从具有多个扩展名的文件名中删除某些扩展名

  9. 9

    从文档目录中获取包含相同名称但具有不同扩展名的文件列表。

  10. 10

    获取具有与基本名称模式匹配的路径的文件名

  11. 11

    Python 3中具有特定文件扩展名的临时文件

  12. 12

    Python递归查找具有特定扩展名的文件

  13. 13

    在MacOS中同步具有不同扩展名的文件

  14. 14

    从具有特定扩展名的文件中删除行

  15. 15

    如何从没有扩展名的路径中获取特定文件名python

  16. 16

    在没有文件扩展名的javascript中获取URL

  17. 17

    从带有扩展名pem的文件中获取RSAPublicKey

  18. 18

    从资产文件夹获取仅具有.txt扩展名的文件的文件名

  19. 19

    如何获取目录树中具有特定文件扩展名的每个文件的目录名称?

  20. 20

    在JavaScript中获取文件扩展名

  21. 21

    如何从具有特定扩展名的文件中获取名称并将其用作批处理脚本中的变量?

  22. 22

    在Python中解析带有“ .data”扩展名的文件?

  23. 23

    使用具有多个句点的文件获取文件扩展名

  24. 24

    尝试复制具有指定扩展名的指定路径中的文件并将其替换为新扩展名

  25. 25

    使用“ for file in”选择多个扩展名,然后获取“ file”的基本名称,然后连接一个扩展名

  26. 26

    在bash 3.2中复制具有扩展扩展名的多个文件的数组

  27. 27

    如何列出目录中除具有指定扩展名的文件以外的所有文件?

  28. 28

    如何删除特定文件夹中具有特定扩展名的所有文件?

  29. 29

    提取具有扩展名URL的文件名

热门标签

归档