python脚本生成caffe train_list.txt的方法


Posted in Python onApril 27, 2018

首先给出代码:

import os
    
path = "/home/data//"
path_exp = os.path.expanduser(path)
classes = [int(p) for p in os.listdir(path_exp)]
classes.sort()
# nrof_classes一个数据集下有多少个文件夹,就是说有多少个人,多少个类别
nrof_classes = len(classes)
count=0
files = open("train_list.txt",'w')
filets = open("test_list.txt",'w')
count_u=0
for i in range(nrof_classes):
  class_name = str(classes[i])
  count=count+1
  count_u=count_u+1
  facedir = os.path.join(path_exp, class_name)
  prefix1 = path+class_name+"/"

  if os.path.isdir(facedir):
    images = os.listdir(facedir)
    #print(images[0])
    image_paths = [(prefix1+img+" "+class_name+"\n") for img in images]
    #print(image_paths[0])
    if count < 0.8*nrof_classes:
      if len(image_paths)>4:
        test_path=[]
        for x in range(2):
          test_path.append(image_paths[0])
          del image_paths[0]
        filets.writelines(test_path)
    files.writelines(image_paths)
    #if count==2:
    #  break
    #imgae_pathses = []
    #防止图像大小为0
    #for x in image_paths:
    #  if os.path.getsize(x)>0:
    #    imgae_pathses.append(x)
    #if len(imgae_pathses)==0:
    #  os.rmdir(facedir)
files.close()
filets.close()

python下os模块的一下有用的用法:

0 重命名:文件和文件夹都是一个命令:

os.rename(original_dir,new_dir)

1 文件操作:

os.mknod("test.txt")        创建空文件
fp = open("test.txt",w)     直接打开一个文件,如果文件不存在则创建文件

关于open 模式:

w     以写方式打开,
a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )

fp.read([size])                     #size为读取的长度,以byte为单位

fp.readline([size])                 #读一行,如果定义了size,有可能返回的只是一行的一部分

fp.readlines([size])                #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。

fp.write(str)                      #把str写到文件中,write()并不会在str后加上一个换行符

fp.writelines(seq)            #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

fp.close()                        #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。  如果一个文件在关闭后还对其进行操作会产生ValueError

fp.flush()                                      #把缓冲区的内容写入硬盘

fp.fileno()                                      #返回一个长整型的”文件标签“

fp.isatty()                                      #文件是否是一个终端设备文件(unix系统中的)

fp.tell()                                         #返回文件操作标记的当前位置,以文件的开头为原点

fp.next()                                       #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。

fp.seek(offset[,whence])              #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。

fp.truncate([size])                       #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

也可以直接打开式的新建文件:

with open('path0.txt','ab') as f:
    for d in arr:
      np.savetxt(f,d,fmt='%5f')    

path0.txt将直接在python脚本所在目录新建

arr是shape是height x width x channel的numpy数组,注意,这里这么写是因为numpy一次只能够保存一个height x width维度的数据

2 新建、删除文件夹

新建:os.makedirs()

比如windows下新建E:\\dir\\subdir\\

os.makedirs('E:\\dir\\subdir\\') 或者 os.makedirs('E:/dir/subdir/')

ubuntu下新建就是os.makedirs('/home/dir/subdir/')

复制文件:

shutil.copyfile("oldfile","newfile")   oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile")oldfile只能是文件夹,newfile可以是文件,也可以是目标目录

复制文件夹:

shutil.copytree("olddir","newdir")olddir和newdir都只能是目录,且newdir必须不存在

重命名文件(目录)

os.rename("oldname","newname")   文件或目录都是使用这条命令

移动文件(目录)

shutil.move("oldpos","newpos")  

删除文件

os.remove("file")

删除目录

os.rmdir("dir")只能删除空目录
shutil.rmtree("dir")空目录、有内容的目录都可以删

转换目录

os.chdir("path")   换路径

获取文件大小:os.path.getsize(filename)

3   需要注意的是,在ubuntu下有可能路径包括~,因此需要展开,展开使用:

path_exp = os.path.expanduser(nam)

4  还有一种情况,路径相连,需要将一级一级的目录连接起来,os会自动处理层级目录之间的/,比如,将目录/home 和 数据 1之间连接起来:

os.path.join('/home', str(1)),

后面也可以为文件名,是一样的用法

5  路径存在:用于判断目录是否存在

a = os.path.exists(dir)

存在返回True,否则False

6   获取目录列表,就是给出的目录下的文件或目录列表:

classes = os.listdir(path_exp)

获得的是path_exp下的所有文件的列表,包含目录和文件,

os.path.dirname(path) #返回文件路径,或者是给定路径去掉最后一个目录后的路径,

还有一种使用方式是用在文件中:

os.path.dirname(__file__)用于获取所在文件的路径

7  运行shell命令: os.system():

ubuntu下:os.system(‘pwd')

Python脚本工作的目录路径: os.getcwd()

读取和设置环境变量:os.getenv() 与os.putenv()

给出当前平台使用的行终止符:os.linesep Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'

指示你正在使用的平台:os.name 对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'

创建多级目录:os.makedirs(r“c:\python\test”)

创建单个目录:os.mkdir(“test”)

获取文件属性:os.stat(file)

修改文件权限与时间戳:os.chmod(file)

终止当前进程:os.exit()

更全面的os.path用法:

os.path.abspath(path) #返回绝对路径
os.path.basename(path) #返回文件名

os.path.basename(‘E:a\b\c.jpg')

'c.jpg'

os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径。
os.path.dirname(path) #返回文件路径
os.path.exists(path)  #路径存在则返回True,路径损坏返回False
os.path.lexists  #路径存在则返回True,路径损坏也返回True
os.path.expanduser(path)  #把path中包含的"~"和"~user"转换成用户目录
os.path.expandvars(path)  #根据环境变量的值替换path中包含的”$name”和”${name}”
os.path.getatime(path)  #返回最后一次进入此path的时间。
os.path.getmtime(path)  #返回在此path下最后一次修改的时间。
os.path.getctime(path)  #返回path的大小
os.path.getsize(path)  #返回文件大小,如果文件不存在就返回错误
os.path.isabs(path)  #判断是否为绝对路径
os.path.isfile(path)  #判断路径是否为文件
os.path.isdir(path)  #判断路径是否为目录
os.path.islink(path)  #判断路径是否为链接
os.path.ismount(path)  #判断路径是否为挂载点()
os.path.join(path1[, path2[, ...]])  #把目录和文件名合成一个路径
os.path.normcase(path)  #转换path的大小写和斜杠
os.path.normpath(path)  #规范path字符串形式
os.path.realpath(path)  #返回path的真实路径
os.path.relpath(path[, start])  #从start开始计算相对路径
os.path.samefile(path1, path2)  #判断目录或文件是否相同
os.path.sameopenfile(fp1, fp2)  #判断fp1和fp2是否指向同一文件
os.path.samestat(stat1, stat2)  #判断stat tuple stat1和stat2是否指向同一个文件

os.path.split(path)  #把路径分割成dirname和basename,返回一个元组:
os.path.split(‘E:a\b\c.jpg')

'E:\\a\\b','c.jpg'
os.path.splitdrive(path)   #一般用在windows下,返回驱动器名和路径组成的元组
os.path.splitext(path)  #分割路径,返回路径名和文件扩展名的元组

os.path.split(‘E:a\b\c.jpg')

'E:\\a\\b\\c','.jpg'

os.path.splitunc(path)  #把路径分割为加载点与文件
os.path.walk(path, visit, arg)  #遍历path,进入每个目录都调用visit函数,visit函数必须有

3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有
文件名,args则为walk的第三个参数

os.path.supports_unicode_filenames  #设置是否支持unicode路径名

以上这篇python脚本生成caffe train_list.txt的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 Python
python显示天气预报
Mar 02 Python
python中使用xlrd、xlwt操作excel表格详解
Jan 29 Python
python实现字符串和日期相互转换的方法
May 13 Python
python自动12306抢票软件实现代码
Feb 24 Python
python爬虫爬取网页表格数据
Mar 07 Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 Python
浅谈python新式类和旧式类区别
Apr 26 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
Python内置加密模块用法解析
Nov 25 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 #Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 #Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 #Python
python模拟表单提交登录图书馆
Apr 27 #Python
Python 读取指定文件夹下的所有图像方法
Apr 27 #Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 #Python
python读取文件名称生成list的方法
Apr 27 #Python
You might like
html中select语句读取mysql表中内容
2006/10/09 PHP
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
popdiv
2006/07/14 Javascript
AJAX架构之Dojo篇
2007/04/10 Javascript
javascript XML数据显示为HTML一例
2008/12/23 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
python实现二维码扫码自动登录淘宝
2016/12/27 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
Django的CVB实例详解
2020/02/10 Python
使用Pycharm分段执行代码
2020/04/15 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
员工薪酬激励方案
2014/06/13 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
2015年计划生育责任书
2015/05/08 职场文书
什么是css原子化,有什么用?
2022/04/24 HTML / CSS
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android