重命名多个 csv 文件
Renaming multiple csv files
我遇到以下问题:在我的目录中有许多文件夹,它们都包含名称为以下格式的 csv 文件:
00000562834-2018-07-27-file-8.csv
为了在 python 中大规模提供这些文件,我必须以公式的形式插入名称 ("xxxxxxxxxxxx-year-month-day-file-hour")。但是,第一位数字(在本例中为 00000562834)是随机的,因此我无法创建自动使用所有文件的代码。
因此我的问题是:有人知道如何删除所有 csv.files 中的前 12 位数字吗?不幸的是,手动更改所有内容不会缩放。
使用正则表达式。 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
这是一个使用 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 循环中处理它们。
import os
import glob
import re
for file in glob.glob("*.csv"):
os.rename(file, re.sub(r"\d+-", "", file))
我遇到以下问题:在我的目录中有许多文件夹,它们都包含名称为以下格式的 csv 文件:
00000562834-2018-07-27-file-8.csv
为了在 python 中大规模提供这些文件,我必须以公式的形式插入名称 ("xxxxxxxxxxxx-year-month-day-file-hour")。但是,第一位数字(在本例中为 00000562834)是随机的,因此我无法创建自动使用所有文件的代码。
因此我的问题是:有人知道如何删除所有 csv.files 中的前 12 位数字吗?不幸的是,手动更改所有内容不会缩放。
使用正则表达式。 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
这是一个使用 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 循环中处理它们。
import os
import glob
import re
for file in glob.glob("*.csv"):
os.rename(file, re.sub(r"\d+-", "", file))