2016-08-15 252 views
0

我想追加文件夹的名称到该文件夹​​内的所有文件名。我必须遍历包含子文件夹的父文件夹。我必须在Python中执行此操作,而不是bat文件。python追加文件夹名称到所有子文件夹中的文件名

实施方式是,把这些文件夹:

Parent Folder 
Sub1 
    example01.txt 
    example01.jpg 
    example01.tif 
Sub2 
    example01.txt 
    example01.jpg 
    example01.tif 

对此

Parent Folder 
Sub1 
    Sub1_example01.txt 
    Sub1_example01.jpg 
    Sub1_example01.tif 
Sub2 
    Sub2_example01.txt 
    Sub2_example01.jpg 
    Sub2_example01.tif 

我相信它的os.rename,但我不能工作,如何调用该文件夹的名称。

感谢您的意见。

+0

你可以用'os.walk'去通过目录,并获得文件的名称,然后'os.rename'到更改名称。 SO不是代码写入服务。 – Harrison

+0

'os.walk'会给我一个文件夹中的文件名,但它不会给我这个文件夹的名字。如果我理解正确。 – burt46

+0

这可能有助于http://techs.studyhorror.com/python-get-last-directory-name-in-path-i-139 – Harrison

回答

2

我会用os.path.basename根找到你的前缀。

import os 

for root, dirs, files in os.walk("Parent"): 
    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))) 

之前

> tree Parent 
Parent 
├── Sub1 
│   ├── example01.jpg 
│   ├── example02.jpg 
│   └── example03.jpg 
└── Sub2 
    ├── example01.jpg 
    ├── example02.jpg 
    └── example03.jpg 

2 directories, 6 files 

> tree Parent 
Parent 
├── Sub1 
│   ├── Sub1_example01.jpg 
│   ├── Sub1_example02.jpg 
│   └── Sub1_example03.jpg 
└── Sub2 
    ├── Sub2_example01.jpg 
    ├── Sub2_example02.jpg 
    └── Sub2_example03.jpg 

2 directories, 6 files 
+0

完美地工作。 对于不熟悉的人,“父母”应该有双重路径空间,例如C:\\ \\测试DIR1 – burt46

1

您可以使用os.walk遍历目录,然后os.rename重命名的所有文件:

from os import walk, path, rename 

for dirpath, _, files in walk('parent'): 
    for f in files: 
     rename(path.join(dirpath, f), path.join(dirpath, path.split(dirpath)[-1] + '_' + f)) 
+0

这也适用。非常感谢 – burt46