如何使用 python 使用父文件的名称加上一些索引重命名文件夹中的子文件
How to rename the sub files in a folder with the name of the parent file plus some index using python
我在给定的父目录中有文件:
parent_folder
|-file1
|-img1.jpg
|-img2.jpg
|-img3.jpg
|-file2
|-img1.jpg
|-img2.jpg
|-img3.jpg
我想通过在 Python 中添加父文件夹的名称来重命名 .jpg 文件。怎么办?
parent_folder
|-file1
|-file1_img1.jpg
|-file1_img2.jpg
|-file1_img3.jpg
|-file2
|-file2_img1.jpg
|-file2_img2.jpg
|-file2_img3.jpg
我尝试了以下代码,但它不起作用:
def naming():
path='D:/parent_folder'
for root, dirs, files in os.walk(path):
print(files)
for name in files:
print(name)
newname = files + name
os.rename(join(root,name),join(root,newname))
你可以尝试这样的事情:
import os
import glob
path_l = glob.glob('/**/*.jpg', recursive=True)
for path in path_l:
path_splitted = path.split('/')
file_name = path_splitted[-1]
dir_name = path_splitted[-2]
new_name = dir_name + '_' + file_name
new_path = path.replace(file_name, new_name)
os.rename(path, new_path)
希望对您有所帮助。
Python 3.4+ 中类似这样的东西应该可以工作:
from pathlib import Path
parent_folder = Path('d:/parent_folder')
for obj in parent_folder.glob('*'):
if obj.is_dir():
for jpg in obj.glob('*.jpg'):
jpg.rename(jpg.parent / f'{jpg.parent.name}_{jpg.name}')
如果您的 Python 解释器不支持 f-strings
,请使用此替代版本:
from pathlib import Path
parent_folder = Path('d:/parent_folder')
for obj in parent_folder.glob('*'):
if obj.is_dir():
for jpg in obj.glob('*.jpg'):
jpg.rename(jpg.parent / '{0}_{1}'.format(jpg.parent.name, jpg.name))
这是一个概念证明:
$ cat ren.py
from pathlib import Path
parent_folder = Path('testdir')
for obj in parent_folder.glob('*'):
if obj.is_dir():
for jpg in obj.glob('*.jpg'):
jpg.rename(jpg.parent / f'{jpg.parent.name}_{jpg.name}')
$ tree testdir
testdir
├── dir1
│ ├── file1.jpg
│ └── file2.jpg
└── dir2
├── file1.jpg
└── file2.jpg
2 directories, 4 files
$ python3 ren.py
$ tree testdir
testdir
├── dir1
│ ├── dir1_file1.jpg
│ └── dir1_file2.jpg
└── dir2
├── dir2_file1.jpg
└── dir2_file2.jpg
2 directories, 4 files
$
希望对您有所帮助。
我在给定的父目录中有文件:
parent_folder
|-file1
|-img1.jpg
|-img2.jpg
|-img3.jpg
|-file2
|-img1.jpg
|-img2.jpg
|-img3.jpg
我想通过在 Python 中添加父文件夹的名称来重命名 .jpg 文件。怎么办?
parent_folder
|-file1
|-file1_img1.jpg
|-file1_img2.jpg
|-file1_img3.jpg
|-file2
|-file2_img1.jpg
|-file2_img2.jpg
|-file2_img3.jpg
我尝试了以下代码,但它不起作用:
def naming():
path='D:/parent_folder'
for root, dirs, files in os.walk(path):
print(files)
for name in files:
print(name)
newname = files + name
os.rename(join(root,name),join(root,newname))
你可以尝试这样的事情:
import os
import glob
path_l = glob.glob('/**/*.jpg', recursive=True)
for path in path_l:
path_splitted = path.split('/')
file_name = path_splitted[-1]
dir_name = path_splitted[-2]
new_name = dir_name + '_' + file_name
new_path = path.replace(file_name, new_name)
os.rename(path, new_path)
希望对您有所帮助。
Python 3.4+ 中类似这样的东西应该可以工作:
from pathlib import Path
parent_folder = Path('d:/parent_folder')
for obj in parent_folder.glob('*'):
if obj.is_dir():
for jpg in obj.glob('*.jpg'):
jpg.rename(jpg.parent / f'{jpg.parent.name}_{jpg.name}')
如果您的 Python 解释器不支持 f-strings
,请使用此替代版本:
from pathlib import Path
parent_folder = Path('d:/parent_folder')
for obj in parent_folder.glob('*'):
if obj.is_dir():
for jpg in obj.glob('*.jpg'):
jpg.rename(jpg.parent / '{0}_{1}'.format(jpg.parent.name, jpg.name))
这是一个概念证明:
$ cat ren.py
from pathlib import Path
parent_folder = Path('testdir')
for obj in parent_folder.glob('*'):
if obj.is_dir():
for jpg in obj.glob('*.jpg'):
jpg.rename(jpg.parent / f'{jpg.parent.name}_{jpg.name}')
$ tree testdir
testdir
├── dir1
│ ├── file1.jpg
│ └── file2.jpg
└── dir2
├── file1.jpg
└── file2.jpg
2 directories, 4 files
$ python3 ren.py
$ tree testdir
testdir
├── dir1
│ ├── dir1_file1.jpg
│ └── dir1_file2.jpg
└── dir2
├── dir2_file1.jpg
└── dir2_file2.jpg
2 directories, 4 files
$
希望对您有所帮助。