gpt4 book ai didi

python - 将文件夹的文件夹中的文件重命名为其父文件夹?

转载 作者:行者123 更新时间:2023-12-01 06:34:51 25 4
gpt4 key购买 nike

我有一批文件夹,它们的名称基于日期。每个文件夹都有一个文件夹,其中的文件名全部相同。

有没有办法重命名文件,使它们根据它们所在的目录结构(显示的是基于日期的父文件夹(第一个文件夹))而变得唯一。

 \user\date\1_2_2019\ABC\0001.csv -> abc_1_2_2019.csv

\user\date\1_3_2019\JKL\0001.csv -> JKL_1_3_2019.csv

\user\date\1_4_2019\XYZ\0001.csv -> XYZ_1_4_2019.csv

\user\date\1_5_2019\123\0001.csv -> 123_1_5_2019.csv

\user\date\1_6_2019\456\0001.csv -> 456_1_6_2019.csv

我知道获取所有文件的基本Python代码是这样的

  import os
for dirname, _, filenames in os.walk('\user\date'):
for filename in filenames:
print(os.path.join(dirname, filename))

但是是否有一个Python代码可以更改所有文件的名称,以至少在开头名称中添加父文件的日期。

提前致谢!

最佳答案

这是使用 python 3.4+ 中的 pathlib 和 python 3.6+ 中的 f-strings 的单向方式

首先,您需要在顶级目录中设置路径,以便我们可以递归地查找所有 csv 文件并使用简单的 for 循环重命名。

from pathlib import Path

files = Path(r'C:\Users\datanovice\Documents\Excels').rglob('*.csv')
# remove 'r' string if you're on macos.

for file in files:
parent_1 = file.parent.name
parent_2 = file.parent.parent.name
file.rename(Path(file.parent,f"{parent_1}_{parent_2}{file.suffix}"))
print(f"{file.name} --> {parent_1}_{parent_2}{file.suffix}")
#1.csv --> ABC_1_2_2019.csv
#1.csv --> ABC_2_2_2019.csv
<小时/>

结果

for f in files:
print(f)
C:\Users\datanovice\Documents\Excels\1_2_2019\ABC\1.csv
C:\Users\datanovice\Documents\Excels\2_2_2019\ABC\1.csv
#after
for f in files:
print(f)
C:\Users\datanovice\Documents\Excels\1_2_2019\ABC\ABC_1_2_2019.csv
C:\Users\datanovice\Documents\Excels\2_2_2019\ABC\ABC_2_2_2019.csv

关于python - 将文件夹的文件夹中的文件重命名为其父文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59724872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com