干净的方法来获取Path对象的“真实”词干?

纳维斯

预期的投入和产出:

a                 -> a
a.txt             -> a
archive.tar.gz    -> archive
directory/file    -> file
d.x.y.z/f.a.b.c   -> f
logs/date.log.txt -> date # Mine!

这是我觉得很肮脏的实现:

>>> from pathlib import Path
>>> example_path = Path("August 08 2015, 01'37'30.log.txt")
>>> example_path.stem
"August 08 2015, 01'37'30.log"
>>> example_path.suffixes
['.log', '.txt']
>>> suffixes_length = sum(map(len, example_path.suffixes))
>>> true_stem = example_path.name[:-suffixes_length]
>>> true_stem
"August 08 2015, 01'37'30"

因为它在Paths上没有后缀而中断

>>> ns_path = Path("no_suffix")
>>> sl = sum(map(len, ns_path.suffixes))
>>> ns_path.name[:-sl]
''

因此,我需要先检查Path后缀是否为

>>> def get_true_stem(path: Path):
...     if path.suffix:
...         sl = sum(map(len, path.suffixes))
...         return path.name[:-sl]
...     else:
...         return path.stem
...
>>>
>>> get_true_stem(example_path)
"August 08, 2015, 01'37'30"
>>> get_true_stem(ns_path)
"no_suffix"

这是我当前的用例:

>>> file_date = datetime.strptime(true_stem, "%B %d %Y, %H'%M'%S")
>>> file_date
datetime.datetime(2015, 8, 8, 1, 37, 30)
>>> new_dest = format(file_date, "%Y-%m-%dT%H:%M:%S%z") + ".log" # ISO-8601
>>> shutil.move(str(example_path), new_dest)

谢谢。

搅拌机

您可以.split做到:

>>> Path('logs/date.log.txt').stem.split('.')[0]
'date'

os.path 效果也一样:

>>> os.path.basename('logs/date.log.txt').split('.')[0]
'date'

它通过了所有测试:

In [11]: all(Path(k).stem.split('.')[0] == v for k, v in {
   ....:     'a': 'a',
   ....:     'a.txt': 'a',
   ....:     'archive.tar.gz': 'archive',
   ....:     'directory/file': 'file',
   ....:     'd.x.y.z/f.a.b.c': 'f',
   ....:     'logs/date.log.txt': 'date'
   ....: }.items())
Out[11]: True

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Git干净的方法来获取SW的早期版本

来自分类Dev

干净的方法来返回带有关联的ActiveRecord对象

来自分类Dev

更干净的方法来获取文件的内容在Rust中作为字符串?

来自分类Dev

jQuery干净的方法来获取href数组并重建它

来自分类Dev

jQuery干净的方法来获取href数组并重建它

来自分类Dev

是否有内置的方法来获取父对象?

来自分类Dev

干净的方法来计算数组求和的雅可比

来自分类Dev

干净的方法来以编程方式使用JS的CSS转换?

来自分类Dev

什么是干净的方法来执行代码Java中的时间?

来自分类Dev

逻辑/干净的方法来扩展文本故事?

来自分类Dev

一种高效,干净的方法来编写ofstream / fstream对象,以编写带有标头的表

来自分类Dev

有没有一种更干净的方法来获取每行的最后N个字符?

来自分类Dev

自从在C ++中执行以来,最干净,最简单的方法来获取经过时间

来自分类Dev

无法获取对象方法来调用其他对象方法

来自分类Dev

有没有简单的方法来创建弹性游戏对象并获取相对坐标?

来自分类Dev

正确的方法来操作/从对象数组中获取信息

来自分类Dev

如果不存在key1,Python dict最简单,最干净的方法来获取key2的值

来自分类Dev

干净的方法来计算R中data.table的两列之间的转换概率

来自分类Dev

泽西岛:有一种干净的方法来指定允许的URL扩展吗?

来自分类Dev

更干净/更短的方法来更新Redux中的嵌套状态?

来自分类Dev

寻求一种更干净的方法来避免嵌套if语句(带有sapply)

来自分类Dev

创建更干净的方法来设置具有多个init的结构?

来自分类Dev

有没有更干净的方法来编写此网格?

来自分类Dev

寻找一种更干净的方法来避免重复从网站抓取

来自分类Dev

VHDL给定位数,有没有更干净的方法来设置特定位?

来自分类Dev

寻找一种干净的方法来从一组节点中查找关系

来自分类Dev

寻找一种更干净的方法来执行此搜索功能

来自分类Dev

寻求一种更干净的方法来避免嵌套if语句(带有sapply)

来自分类Dev

有没有更干净的方法来整理数据框列表?

Related 相关文章

  1. 1

    Git干净的方法来获取SW的早期版本

  2. 2

    干净的方法来返回带有关联的ActiveRecord对象

  3. 3

    更干净的方法来获取文件的内容在Rust中作为字符串?

  4. 4

    jQuery干净的方法来获取href数组并重建它

  5. 5

    jQuery干净的方法来获取href数组并重建它

  6. 6

    是否有内置的方法来获取父对象?

  7. 7

    干净的方法来计算数组求和的雅可比

  8. 8

    干净的方法来以编程方式使用JS的CSS转换?

  9. 9

    什么是干净的方法来执行代码Java中的时间?

  10. 10

    逻辑/干净的方法来扩展文本故事?

  11. 11

    一种高效,干净的方法来编写ofstream / fstream对象,以编写带有标头的表

  12. 12

    有没有一种更干净的方法来获取每行的最后N个字符?

  13. 13

    自从在C ++中执行以来,最干净,最简单的方法来获取经过时间

  14. 14

    无法获取对象方法来调用其他对象方法

  15. 15

    有没有简单的方法来创建弹性游戏对象并获取相对坐标?

  16. 16

    正确的方法来操作/从对象数组中获取信息

  17. 17

    如果不存在key1,Python dict最简单,最干净的方法来获取key2的值

  18. 18

    干净的方法来计算R中data.table的两列之间的转换概率

  19. 19

    泽西岛:有一种干净的方法来指定允许的URL扩展吗?

  20. 20

    更干净/更短的方法来更新Redux中的嵌套状态?

  21. 21

    寻求一种更干净的方法来避免嵌套if语句(带有sapply)

  22. 22

    创建更干净的方法来设置具有多个init的结构?

  23. 23

    有没有更干净的方法来编写此网格?

  24. 24

    寻找一种更干净的方法来避免重复从网站抓取

  25. 25

    VHDL给定位数,有没有更干净的方法来设置特定位?

  26. 26

    寻找一种干净的方法来从一组节点中查找关系

  27. 27

    寻找一种更干净的方法来执行此搜索功能

  28. 28

    寻求一种更干净的方法来避免嵌套if语句(带有sapply)

  29. 29

    有没有更干净的方法来整理数据框列表?

热门标签

归档