TensorFlow gfile文件操作详解-程序员宅基地

转:https://blog.csdn.net/u014182497/article/details/80681331

一、gfile模块是什么

    gfile模块定义在tensorflow/python/platform/gfile.py,但其源代码实现主要位于tensorflow/tensorflow/python/lib/io/file_io.py,那么gfile模块主要功能是什么呢? 

 

tf.gfile模块的主要角色是:
1.提供一个接近Python文件对象的API,以及
2.提供基于TensorFlow C ++ FileSystem API的实现。 

C ++ FileSystem API支持多种文件系统实现,包括本地文件,谷歌云存储(以gs://开头)和HDFS(以hdfs:/开头)。 TensorFlow将它们导出为tf.gfile,以便我们可以使用这些实现来保存和加载检查点,编写TensorBoard log以及访问训练数据(以及其他用途)。但是,如果所有文件都是本地文件,则可以使用常规的Python文件API而不会造成任何问题。

以上为google对tf.gfile的说明。

二、gfile API介绍

下面将分别介绍每一个gfile API!

2-1)tf.gfile.Copy(oldpath, newpath, overwrite=False)

拷贝源文件并创建目标文件,无返回,其形参说明如下:

oldpath:带路径名字的拷贝源文件;

newpath:带路径名字的拷贝目标文件;

overwrite:目标文件已经存在时是否要覆盖,默认为false,如果目标文件已经存在则会报错

2-2)tf.gfile.MkDir(dirname)

创建一个目录,dirname为目录名字,无返回。

2-3)tf.gfile.Remove(filename)

删除文件,filename即文件名,无返回。

2-4)tf.gfile.DeleteRecursively(dirname)

递归删除所有目录及其文件,dirname即目录名,无返回。

2-5)tf.gfile.Exists(filename)

判断目录或文件是否存在,filename可为目录路径或带文件名的路径,有该目录则返回True,否则False。

2-6)tf.gfile.Glob(filename)

查找匹配pattern的文件并以列表的形式返回,filename可以是一个具体的文件名,也可以是包含通配符的正则表达式。

2-7)tf.gfile.IsDirectory(dirname)

判断所给目录是否存在,如果存在则返回True,否则返回False,dirname是目录名。

2-8)tf.gfile.ListDirectory(dirname)

罗列dirname目录下的所有文件并以列表形式返回,dirname必须是目录名。

2-9)tf.gfile.MakeDirs(dirname)

以递归方式建立父目录及其子目录,如果目录已存在且是可覆盖则会创建成功,否则报错,无返回。

2-10)tf.gfile.Rename(oldname, newname, overwrite=False)

重命名或移动一个文件或目录,无返回,其形参说明如下:

oldname:旧目录或旧文件;

newname:新目录或新文件;

overwrite:默认为false,如果新目录或新文件已经存在则会报错,否则重命名或移动成功。

2-11)tf.gfile.Stat(filename)

返回目录的统计数据,该函数会返回FileStatistics数据结构,以dir(tf.gfile.Stat(filename))获取返回数据的属性如下:

2-12)tf.gfile.Walk(top, in_order=True)

递归获取目录信息生成器,top是目录名,in_order默认为True指示顺序遍历目录,否则将无序遍历,每次生成返回如下格式信息(dirname, [subdirname, subdirname, ...], [filename, filename, ...])。

2-13)tf.gfile.GFile(filename, mode)

获取文本操作句柄,类似于python提供的文本操作open()函数,filename是要打开的文件名,mode是以何种方式去读写,将会返回一个文本操作句柄。

tf.gfile.Open()是该接口的同名,可任意使用其中一个!

2-14)tf.gfile.FastGFile(filename, mode)

该函数与tf.gfile.GFile的差别仅仅在于“无阻塞”,即该函数会无阻赛以较快的方式获取文本操作句柄。

二、gfile API介绍
下面将分别介绍每一个gfile API!
 
2-1)tf.gfile.Copy(oldpath, newpath, overwrite=False)
 
拷贝源文件并创建目标文件,无返回,其形参说明如下:
 
oldpath:带路径名字的拷贝源文件;
 
newpath:带路径名字的拷贝目标文件;
 
overwrite:目标文件已经存在时是否要覆盖,默认为false,如果目标文件已经存在则会报错
 
2-2)tf.gfile.MkDir(dirname)
 
创建一个目录,dirname为目录名字,无返回。
 
2-3)tf.gfile.Remove(filename)
 
删除文件,filename即文件名,无返回。
 
2-4)tf.gfile.DeleteRecursively(dirname)
 
递归删除所有目录及其文件,dirname即目录名,无返回。
 
2-5)tf.gfile.Exists(filename)
 
判断目录或文件是否存在,filename可为目录路径或带文件名的路径,有该目录则返回True,否则False。
 
2-6)tf.gfile.Glob(filename)
 
查找匹配pattern的文件并以列表的形式返回,filename可以是一个具体的文件名,也可以是包含通配符的正则表达式。
 
2-7)tf.gfile.IsDirectory(dirname)
 
判断所给目录是否存在,如果存在则返回True,否则返回False,dirname是目录名。
 
2-8)tf.gfile.ListDirectory(dirname)
 
罗列dirname目录下的所有文件并以列表形式返回,dirname必须是目录名。
 
2-9)tf.gfile.MakeDirs(dirname)
 
以递归方式建立父目录及其子目录,如果目录已存在且是可覆盖则会创建成功,否则报错,无返回。
 
2-10)tf.gfile.Rename(oldname, newname, overwrite=False)
 
重命名或移动一个文件或目录,无返回,其形参说明如下:
 
oldname:旧目录或旧文件;
 
newname:新目录或新文件;
 
overwrite:默认为false,如果新目录或新文件已经存在则会报错,否则重命名或移动成功。
 
2-11)tf.gfile.Stat(filename)
 
返回目录的统计数据,该函数会返回FileStatistics数据结构,以dir(tf.gfile.Stat(filename))获取返回数据的属性如下:
 
 
2-12)tf.gfile.Walk(top, in_order=True)
 
递归获取目录信息生成器,top是目录名,in_order默认为True指示顺序遍历目录,否则将无序遍历,每次生成返回如下格式信息(dirname, [subdirname, subdirname, ...], 
[filename, filename, ...])。
2-13)tf.gfile.GFile(filename, mode) 获取文本操作句柄,类似于python提供的文本操作open()函数,filename是要打开的文件名,mode是以何种方式去读写,将会返回一个文本操作句柄。 tf.gfile.Open()是该接口的同名,可任意使用其中一个! 2-14)tf.gfile.FastGFile(filename, mode) 该函数与tf.gfile.GFile的差别仅仅在于“无阻塞”,即该函数会无阻赛以较快的方式获取文本操作句柄。

 

转载于:https://www.cnblogs.com/kerngeeksund/p/11261829.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30905981/article/details/101564328

智能推荐

JVM 启动参数详解_jvm启动参数: -dastison.parser.safellode=true-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏3次。JVM 启动参数详解JVM 作为一个通用的虚拟机,我们可以通过启动Java命令时指定不同JVM参数,让 JVM调整自己的运行状态和行为,内存管理和垃圾回收的GC算法等等。直接通过命令行启动 Java程序的格式为:java [options] classname [args]java [options] -jar filename [args]其中[options] 部分称为 “JVM 选项”,对应IDE中的 VM options,可用jps -v 查看。[args] 部分是指 “传递给ma_jvm启动参数: -dastison.parser.safellode=true

小程序底部tabbar加数字标_小程序底部加上数字-程序员宅基地

文章浏览阅读1.2w次,点赞8次,收藏50次。小程序底部tabbar悬浮数字标功能实现效果如下:大家都知道小程序的底部,是通过APP,JSON进行配置的,如果想要在下面的tabbar上面做手脚的话,网上搜索是找不到方法的,好多小白见到这种需求都感觉无从下手,如果你也遇到这种问题,那就好好研究一下API吧,话不多说,上代码://这里我们只介绍我们用到的方法wx.setTabBarBadge({//这个方法的意思是,为小程序某一项的t..._小程序底部加上数字

java判断jsonarray是否为数组_java-测试它是JSONObject还是JSONArray-程序员宅基地

文章浏览阅读3.9k次。java-测试它是JSONObject还是JSONArray我有一个json流,可以像这样:{"intervention":{"id":"3","subject":"dddd","details":"dddd","beginDate":"2012-03-08T00:00:00+01:00","endDate":"2012-03-18T00:00:00+01:00","campus":{"id":"...

【HttpClient详解】HttpClient的几种基本用法实例_java 打印 httpentity-程序员宅基地

文章浏览阅读764次。package cn.zifangsky.httpclient;import java.io.File;import java.util.ArrayList;import java.util.List;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.client.entity.UrlEncodedFo_java 打印 httpentity

自己制作crowd counting数据集_crowd counting p2pnet数据集制作-程序员宅基地

文章浏览阅读2.1k次,点赞14次,收藏35次。Crowd counting的数据集包括两部分:图像部分和标签部分标签部分主要包括每个人头的坐标点:(x, y);常见的标签格式例如:ShanghaiTech数据集中的格式,用mat文件存储每个人头的坐标点,一张图像对应一个mat文件;当我们自己制作数据集时,需要经历以下几个步骤:1)拍摄图像或者视频;视频需要切分成帧;2)在图像上进行标点,标点的同时会记录下坐标点;3)根据这些坐标点生成每张图像对应的.mat文件;4)在训练时,将mat文件中的坐标转换为density ._crowd counting p2pnet数据集制作

职业生涯规划与管理实操(zt)-程序员宅基地

文章浏览阅读199次。职业生涯的规划与管理是作为职业人士所面临的首要问题,它是对个人职业发展的远景规划和资源配置。然而绝大多数人忽视或者仅仅在表面上关注这一问题,他们希望在工作中一切都得到满足,于是总是“这山望着那山高”,多次“追求发展机会”的结果却..._职业生涯是一个人职业、工作待遇、职位的变动及工作理想实现的整个过程。它具

随便推点

营业税-程序员宅基地

文章浏览阅读6.2k次。营业税求助编辑百科名片 营业税系统营业税(Business tax),是对在我国境内提供应税劳务、转让无形资产或销售不动产的单位和个人,就其所取得的营业额征收的一种税。营业税属于流转税制中的一个主要税种。2011年11月17日,财政部、国家税务总局正式公布营业税改征增值税试点方案。目录

prometheus数据结构和压缩原理讲解_prometheus 数据结构-程序员宅基地

文章浏览阅读3.8k次。Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(引用官方PPT)。接下来让我们看看他的原理。Prometheus内部主要分为三大块,Retrieval是负责定时去暴露的目标页面上去抓取采样指标数据,Storage是负责将采样数据写磁盘,PromQL是Prometheus提供的查询..._prometheus 数据结构

ORACLE锁表如何批量解锁?如何查找锁表原因?_oracle批量解锁表语句-程序员宅基地

文章浏览阅读1.1k次。ORACLE锁表如何批量解锁?如何查找锁表原因?_oracle批量解锁表语句

【mybatis-plus】mybatisplus entity XXX Not Found TableInfoCache.错误-程序员宅基地

文章浏览阅读1.4w次,点赞4次,收藏2次。ctiverRecord的特点是通过一系列的配置,实体类也具有操作CRUD的功能使用Mybatisplus activerecord功能,需要进行如下配置:1. 实体类A继承com.baomidou.mybatisplus.extension.activerecord.Model2.实体类重写Model的方法//重写这个方法,return当前类的主键 @Overrid..._not found tableinfocache.

限时,字节Java程序性能优化宝典大全,这才叫真正的性能优化_java 程序性能优化宝典-程序员宅基地

文章浏览阅读96次。让你的Java程序更快、更稳定程序的性能受代码质量的直接影响。那么该如何让代码在级别上提升系统性能呢?其实性能提升永远没有捷径,需要分析、优化、实验、监控,需要一点点积累和深入。随着你对项目和性能优化理解不断深入,会发现提升性能的手段变得越来越丰富,性能数据自然也会跟着上去。一个优秀的程序员,不仅要会编写程序,更要会编写高质量的程序感受Java开发中的大智慧,让你的Java程序更优美。那么今天LZ挖出一份有关Java程序性能优化的文档,可以让你的Java程序更快、更稳定,主要是涵盖了一些Ja.._java 程序性能优化宝典

坑之gradle引入lombok和mapstruct依赖不能编译注解的问题_gradle mapstruct-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏3次。一、问题描述1、在gradle中引入lombok和mapstruct依赖compile group: 'org.mapstruct',name: 'mapstruct-jdk8', version: '1.3.1.Final'compile group: 'org.projectlombok',name: 'lombok', version: '1.18.12'2、出现的问题编译的时候@Data注解无法生成get和set方法,导致编译一直无法通过。二、问题解决1、首先看看lombok插件有_gradle mapstruct