【问题标题】:Renaming multiple csv files重命名多个 csv 文件
【发布时间】:2019-01-05 12:44:12
【问题描述】:

我有以下问题:在我的目录中,我有许多文件夹,它们都包含名称格式如下的 csv 文件:

00000562834-2018-07-27-file-8.csv

为了使这些文件在 python 中大规模可用,我必须以公式的形式插入名称(“xxxxxxxxxxxx-year-month-day-file-hour”)。但是,第一个数字(在本例中为 00000562834)是随机的,因此我无法创建自动使用所有文件的代码。

因此我的问题是:有人知道如何删除所有 csv.files 中的前 12 位数字吗?不幸的是,手动更改所有内容无法扩展。

【问题讨论】:

  • 每个日期/小时是否只有一个文件?如果删除文件名的第一部分,会不会出现名称冲突?

标签: python renaming


【解决方案1】:

使用正则表达式。 re.sub

import re
s = "00000562834-2018-07-27-file-8.csv"
print( re.sub(r"\d{11}-", "", s) )

输出:

2018-07-27-file-8.csv

【讨论】:

    【解决方案2】:

    这是一个使用 pathlib 和 rglob 方法的解决方案。

    from pathlib import Path
    rootfolder = '/home/nicolaso/foo/bar/'  # example
    
    for f in Path(rootfolder).rglob('*-file-*.csv'):
      new_name = f.name.split('-', 1)[1]
      f.rename(f.with_name(new_name))
    

    如果您实际上不想重命名文件,则无论如何都可以在 for 循环中处理它们。

    【讨论】:

    • 非常感谢!这正是我想要的。
    【解决方案3】:
    import os
    import glob
    import re
    
    for file in glob.glob("*.csv"):
        os.rename(file, re.sub(r"\d+-", "", file))
    

    【讨论】:

      猜你喜欢
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 2022-01-13
      • 2019-11-02
      相关资源
      最近更新 更多