Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将多个目录的名称添加到文件名_Python_Directory - Fatal编程技术网

Python 将多个目录的名称添加到文件名

Python 将多个目录的名称添加到文件名,python,directory,Python,Directory,我的文件夹结构如下: C:\Users\me\JupyterNotebooks\Work\LabCode\datafiles\2020\u 09sept\u 17\00\58 在最后一个“58”文件夹下,放置一个文件;00.avro 我想将文件重命名为:2020_09sept_17_00_58_00.avro(将最后三个目录添加到文件名) 我可以使用58文件夹将文件名重命名为58_00.avro: for root, dirs, files in os.walk(r'C:\Users\

我的文件夹结构如下:

C:\Users\me\JupyterNotebooks\Work\LabCode\datafiles\2020\u 09sept\u 17\00\58

在最后一个“58”文件夹下,放置一个文件;00.avro

我想将文件重命名为:2020_09sept_17_00_58_00.avro(将最后三个目录添加到文件名)

我可以使用58文件夹将文件名重命名为58_00.avro:

for root, dirs, files in 
    os.walk(r'C:\Users\me\JupyterNotebooks\Work\LabCode\datafiles\2020_09sept_17\00'):      
    if not files:
        continue
    prefix = os.path.basename(root)
    for f in files:
        os.rename(os.path.join(root, f), os.path.join(root, "{}_{}".format(prefix, f)))
(来自此)

但是如何使用多个文件夹名称重命名?

试试以下方法:

用于os.walk(r'C:\Users\me\JupyterNotebooks\Work\LabCode\datafiles\2020\u 09sept\u 17\00)中的根目录、目录和文件:
如果不是文件:
持续
dirnames=[]
pref=根
对于范围(3)中的35;:收集最后3个目录名
dirnames.insert(0,os.path.basename(pref))
pref=os.path.dirname(pref)
prefix=“389;”。连接(目录名称)
对于文件中的f:
当前名称=os.path.join(根,f)
new_name=os.path.join(根“{}{}”.format(前缀,f))
重命名(当前名称、新名称)