已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。
6个月前关闭。
Improve this question
我有一个images
文件夹,在images文件夹中,它包含150个文件夹,每个文件夹包含10,000张图像。单个gt.txt
在images
文件夹之外,包含所有图像的名称和真实值。gt.txt
的结构类似于images/0/0.jpg 참자녀사무실
。
我想重命名所有图像与模式一样gt_image_name.jpg
像참자녀사무실_0.jpg
.然而,我无法做到这一点,我写了一个简单的代码,但我认为glob库不工作的文件夹.
编码
mapping = {}
f = open('/media/cvpr/CM_22/synthtiger/results/gt.txt', 'r')
for line in f.readlines():
k, v = line.split()
path, old_name = k.rsplit('/', 1)
new_name = "{}/{}_{}".format(path, v, old_name)
mapping[k] = v
base_path = '/media/cvpr/CM_22/synthtiger/results/'
for old, new in mapping.items():
old_path = os.path.join(base_path, old)
new_path = os.path.join(base_path, new)
os.rename(old_path, new_path)
输出错误
1条答案
按热度按时间3vpjnl9f1#
我想你可以这样做:
1.读取gt.txt,读取文件,使用
split
得到原始名称raw_name
和部分真实的名称img_name
;1.使用
{}_{}.format(img_name, raw_name)
创建新的文件名;1.使用一个
for
循环来重命名所有的图像,你可以使用os.rename
来做这件事。更新:我的经验是,不使用任何循环超过两层
现在,你有一个dict保存像
{"images/0/0.jpg": "images/0/참자녀사무실_0.jpg"}
在那之后,使用另一个for
循环来重命名所有文件注:多圈是一个不好的编程习惯,因为它很难调试,也很难阅读,容易出错,最后没有人理解你的代码,包括你自己。使用这样的循环,不需要列出所有文件,只需使用Map来重命名文件名