Q:

进行数据集图片预处理时,初始命名如下图(Fig1左),发现读取文件时,读取的结构并非如所设想的那样顺序读取

Fig 1

A:

pyhton读取文件的时候,按照文件名的ascii码中的顺序进行逐位排序,于是编写以下代码,更改命名规则,程序如下

 # -*- coding:utf-8 -*-
# ------------------------------
# @Time :2019/5/26 10:55
# @Author :jonie
# @Email :xxxxx@xx.com
# @File :重命名.py
# Description:实现形如"类名_000x.jpg"的命名方式
# ------------------------------
import os
def re_name(path_name):
num = 0
for dir_image in os.listdir(path_name): # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
# print(dir_image)
full_path = os.path.abspath(os.path.join(path_name, dir_image))
# print(full_path) if os.path.isdir(full_path): # 如果是文件夹,继续递归调用
if not os.path.exists(os.path.join(r"D:\Jonie_Project_scc15\dataset\scene_categories",dir_image)):
os.makedirs(os.path.join(r"D:\Jonie_Project_scc15\dataset\scene_categories",dir_image))
# print(os.path.join(r"D:\Jonie_Project_ot8\data1\scene_categories",dir_image))
print("isdir")
re_name(full_path)
# print(full_path)
else: # 如果是文件了
# pass
# print(dir_image)
# print(full_path)
if dir_image.endswith('.jpg'):
cla=full_path.split('\\')[-2]
image_name = '%s_%04d.jpg' % (cla, num) # 注意这里图片名一定要加上扩展名,否则后面imwrite的时候会报错
image_name =os.path.join("D:\Jonie_Project_scc15","dataset\scene_categories",cla,image_name)
oldname=os.path.join("D:\Jonie_Project_scc15","dataset\scene_categories",cla,image_name)
# print(image_name)
print(full_path)
os.rename(full_path, image_name)
num = num + 1
if __name__ == '__main__':
re_name(r"D:\Jonie_Project_scc15\dataset\scene_categories")

rename.py

再次进行读取,发现达到预期结果

Fig 2

python文件夹中文件读取踩坑的更多相关文章

  1. Python按顺序读取文件夹中文件

    参考资料: https://blog.csdn.net/qq_22227123/article/details/79903116 https://blog.csdn.net/merdy_xi/arti ...

  2. python批量处理文件夹中文件的问题

    用os模块读取文件夹中文件 原来的代码: import osfrom scipy.misc import imread filenames=os.listdir(r'./unprocess')for ...

  3. C# 将文件夹中文件复制到另一个文件夹

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  4. php获取指定文件夹中文件名称

    /** * php获取指定文件夹中文件名称 * @author jackie <2018.10.10> */ public static function getFileName($fil ...

  5. Python之获取文件夹中文件列表以及glob与fnmatch模块的使用

    获取文件夹中的文件列表 print(os.listdir("../secondPackage")) # ['__init__.py', 'secondCookBook.py', ' ...

  6. C#实现对指定文件夹中文件按修改时间排序

    string path = "~/Document/Introduction/团队管理制度/";            DirectoryInfo dirinfo = new Di ...

  7. 【linux】复制文件夹中文件,排除部分文件

    如下 cp `ls|grep -v -E '*json|out'|xargs` /home/data/ 用grep -v  表示排除, -E 表示正则 ls|grep -v -E '*json|out ...

  8. Java访问文件夹中文件的递归遍历代码Demo

    上代码: import java.io.File; /* * 需求:对指定目录进行所有内容的列出(包含子目录中的内容) * 也可以理解为 深度遍历. */ public class FindAllFi ...

  9. 使用java读取文件夹中文件的行数

    使用java统计某文件夹下所有文件的行数 经理突然交代一个任务:要求统计某个文件夹下所有文件的行数.在网上查了一个多小时没有解决.后来心里不爽就决定自己写一个java类用来统计文件的行数,于是花了两个 ...

随机推荐

  1. HBase 分裂(split)

    1. 为什么split 最初一个Table 只有一个region(因此只能存放在一个region server上).随着数据的不断写入,HRegion越来越大,当到达一定程度后分裂为两个,通过负载均衡 ...

  2. 关于python2和python3除法的区别

    在Python2中,除法的取值结果取整数 >>> 9/2 4 而在Python3中,除法/的结果包含小数,如果只想取整数需要使用// >>> 9/2 4.5 > ...

  3. 001 Ceph简介

    一.Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.Ceph分布式存储能够在一个统一的系统中同时提供了对象.块.和文件存储 ...

  4. 【小技巧】在PS中测量图层间的边距

    今天学到了一个小技巧,前端切页面时会很方便,就是测量间距margin的. 在ps中,选中某个图层,然后按住ctrl键,再移动鼠标,就可以出现这个图层距其他元素的边距,这个太方便了.在此记录一下,免的以 ...

  5. 小小知识点(四十一)-based和based on的正确理解

    A-based B<等价于>B based on A<等价于>B on the basis of A,翻译为基于A的B For example: (1) Radar-based ...

  6. CAS的实现原理

    CAS的全称是CompareAndSwap,比较并交换,是Java保证原子性的一种重要方法,也是一种乐观锁的实现方式. 它需要先提前一步获取旧值,然后进入此方法比较当下的值是否与旧值相同,如果相同,则 ...

  7. Eclipse自动添加注释模板

    Eclipse使用自动注释:在Eclipse工具的Window\preferences\JAVA\Code Style\Code templates\Comments下设置以下模版 文件(Files) ...

  8. express项目创建

    npm install express-generator -g       全局安装express生成器 express -h  帮助中心 express 项目名 npm i    安装依赖 nod ...

  9. python修改列表

    替换元素 效果图: 代码: #创建一个列表 list = ['a','b','c','d','e','f'] print('修改前:',list) #修改元素 指定索引重设其值 list[1] = ' ...

  10. react-mockjs

    2020-01-17 react-mockjs 使用 最近参加了公司的一个新的项目,前后端同时开发,这时后端提供不了前端接口,那么就要靠咱们前端自己mock数据啦. 用到mock 数据的工具是 moc ...