通过删除文件名的结尾来重命名文件夹中的所有csv文件

ql3eal8s  于 2023-01-18  发布在  其他
关注(0)|答案(2)|浏览(173)

我有一个以. csv结尾的完整数据文件夹。
所有csv文件的命名方式如下:

  • “数据_AA_10_344362.csv”
  • “数据_AA_25_124567.csv”
  • “数据_AA_37_896432.csv”
  • 等等。

我想通过删除最后一个下划线后的所有内容来重命名所有文件,但保留“. csv”。因此,我希望我的文件自动重命名为:

  • “数据_AA_10.csv”
  • “数据_AA_25.csv”
  • “数据_AA_37.csv”

我试过类似的方法,但不完整/不正确:

import glob, os
import pathlib
 
DATA_DIR = pathlib.Path('C:\\Users\\dvs\\documents\\data')

for old in DATA_DIR.glob('*.csv'):
    new = '_'.join(old.split('_')[:-1])
    os.rename(old, new)

我知道这个问题已经被回答了,但是我自己没办法做到。

kpbpu008

kpbpu0081#

您可以使用:

DATA_DIR = pathlib.Path('C:\\Users\\dvs\\documents\\data')

for old in DATA_DIR.glob('*.csv'):
    new = old.parent / f"{'_'.join(old.stem.split('_')[:-1])}{old.suffix}"
    old.rename(new)
    print(f'Renamed {old} to {new}')

输出(我的数据文件夹是"cities')

Renamed cities/data_AA_25_124567.csv to cities/data_AA_25.csv
Renamed cities/data_AA_10_344362.csv to cities/data_AA_10.csv
Renamed cities/data_AA_37_896432.csv to cities/data_AA_37.csv
jjhzyzn0

jjhzyzn02#

使用路径库中的.rename:

from pathlib import Path

path = "C:\\Users\\dvs\\documents\\data"
[x.rename(f"{path}/{x.stem.rsplit('_', 1)[0]}.csv") for x in Path(path).rglob("*.csv")]

相关问题