bur*_*t46 2 python file-processing
我试图将文件夹的名称附加到该文件夹中的所有文件名.我必须遍历包含子文件夹的父文件夹.我必须在Python中执行此操作,而不是bat文件.
例如,拿这些文件夹:
Parent Folder
Sub1
example01.txt
example01.jpg
example01.tif
Sub2
example01.txt
example01.jpg
example01.tif
Run Code Online (Sandbox Code Playgroud)
对此
Parent Folder
Sub1
Sub1_example01.txt
Sub1_example01.jpg
Sub1_example01.tif
Sub2
Sub2_example01.txt
Sub2_example01.jpg
Sub2_example01.tif
Run Code Online (Sandbox Code Playgroud)
我相信它的os.rename,但我无法解决如何调用文件夹名称.
感谢您的建议.
我会os.path.basename在root用户上找到你的前缀.
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)))
Run Code Online (Sandbox Code Playgroud)
之前
> tree Parent
Parent
??? Sub1
? ??? example01.jpg
? ??? example02.jpg
? ??? example03.jpg
??? Sub2
??? example01.jpg
??? example02.jpg
??? example03.jpg
2 directories, 6 files
Run Code Online (Sandbox Code Playgroud)
后
> 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
Run Code Online (Sandbox Code Playgroud)
您可以使用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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3863 次 |
| 最近记录: |