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之集成开发环境(IDE)
Sep 12 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
Python3简单实例计算同花的概率代码
Dec 06 Python
Python selenium实现微博自动登录的示例代码
May 16 Python
python语音识别实践之百度语音API
Aug 30 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
Python设计模式之策略模式实例详解
Jan 21 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
Python3监控疫情的完整代码
Feb 20 Python
Python可视化学习之seaborn调色盘
Feb 24 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
使用PHP维护文件系统
2006/10/09 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
python批量导出导入MySQL用户的方法
2013/11/15 Python
python实现简单的TCP代理服务器
2014/10/08 Python
提升Python程序运行效率的6个方法
2015/03/31 Python
Python读写配置文件的方法
2015/06/03 Python
python线程池threadpool实现篇
2018/04/27 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
Python 没有main函数的原因
2020/07/10 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
python实现登录与注册系统
2020/11/30 Python
消防先进事迹材料
2014/02/10 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
政府门卫岗位职责
2014/04/29 职场文书
创建青年文明号材料
2014/05/09 职场文书
党员检讨书
2014/10/13 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python