Python 是否将文件夹中的文件重命名为其父文件夹?
我有一批文件夹的名称基于日期。每个文件夹都有一个文件夹,其中的文件名都相同 是否有方法根据文件所在的目录结构(显示的是基于日期的父文件夹(第一个文件夹))重命名文件,使其变得唯一Python 是否将文件夹中的文件重命名为其父文件夹?,python,pandas,macos,directory,directory-structure,Python,Pandas,Macos,Directory,Directory Structure,我有一批文件夹的名称基于日期。每个文件夹都有一个文件夹,其中的文件名都相同 是否有方法根据文件所在的目录结构(显示的是基于日期的父文件夹(第一个文件夹))重命名文件,使其变得唯一 \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_
\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字符串的单向方法+ 首先,您需要在顶级目录中设置路径,这样我们就可以递归地找到所有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