2016-08-15 279 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

相關問題