目录
一、概述
和Python内置模块os非常像,一般都能用os模块代替。
1、类
- class FastGFile: 没有线程锁定的文件I/O包装器。
- class GFile: 没有线程锁定的文件I/O包装器。
- class Open: 没有线程锁定的文件I/O包装器。
2、函数
- Copy(...): 将数据从oldpath复制到newpath。
- DeleteRecursively(...):递归删除dirname下的所有内容。
- Exists(...): 确定路径是否存在。
- Glob(...): 返回与给定模式匹配的文件列表。
- IsDirectory(...): 返回路径是否为目录。
- ListDirectory(...): 返回目录中包含的项的列表。
- MakeDirs(...): 创建一个目录和所有父/中间目录。
- MkDir(...): 创建名为“dirname”的目录。
- Remove(...): 删除位于“filename”的文件。
- Rename(...): 重命名或移动文件/目录。
- Stat(...): 返回给定路径的文件统计信息。
- Walk(...): 递归目录树生成器。
二、函数和类的说明
1、tf.gfile.Copy
tf.gfile.Copy(
oldpath,
newpath,
overwrite=False
)
参数:
- oldpath:字符串,需要复制内容的文件的名称
- newpath: string,要复制到的文件的名称
overwrite
:布尔值,如果为false,则newpath将被现有文件占用。
可能产生的异常:
errors.OpError
: If the operation fails.
2、tf.gfile.DeleteRecursively
tf.gfile.DeleteRecursively(dirname)
参数:
- dirname:字符串,指向目录的路径
可能产生的异常:
errors.OpError
: If the operation fails.
3、tf.gfile.Exists
tf.gfile.Exists(filename)
参数:
- 文件名:字符串,路径
返回值:
- 如果路径存在,则为True,无论是文件还是目录。如果路径不存在且没有文件系统错误,则为False。
可能产生的异常:
errors.OpError
: Propagates any errors reported by the FileSystem API.
4、tf.gfile.FastGFile
1、__init__
__init__(
name,
mode='r'
)
2、Properties
模式
返回文件打开时的模式。
名称
返回文件名称
3、__enter__
__enter__()
使用with语句。
4、__exit__
__exit__(
unused_type,
unused_value,
unused_traceback
)
使用with语句。
5、__iter__
__iter__()
6、close
close()
FileIO关门。应被调用以刷新可写文件。
7、flush
flush()
刷新可写文件。这只能确保数据在没有任何关于是否写入磁盘的保证的情况下离开进程。这意味着数据可以在应用程序崩溃时存活,但不一定能在操作系统崩溃时存活。
8、next
next()
9、read
read(n=-1)
以字符串的形式返回文件的内容。从文件中的当前位置开始读取。
参数:
- n:如果n != -1,则读取'n'字节。如果n = -1,读取文件结束。
返回值:
- 文件的'n'字节(或整个文件)在字节模式下,或字符串的'n'字节在字符串(常规)模式下。
10、readline
readline()
从文件中读取下一行。在末尾留下“\n”。
11、readlines
readlines()
返回列表中文件的所有行。
12、seek
seek(
offset=None,
whence=0,
position=None
)
查找文件中的偏移量。(弃用参数)
参数:
offset
:相对于where参数的字节数。- where:有效值为:0:文件的开始(默认值)1:相对于文件的当前位置2:相对于文件的结束位置。偏移量通常是负的。
13、seekable
seekable()
返回True,因为FileIO支持seek()/tell()的随机访问操作
14、size
size()
返回文件的大小。
15、tell
tell()
返回文件中的当前位置。
16、write
write(file_content)
将file_content写入文件。附加到文件末尾。
5、tf.gfile.Glob
查找匹配pattern的文件并以列表的形式返回,filename可以是一个具体的文件名,也可以是包含通配符的正则表达式。
tf.gfile.Glob(filename)
参数:
filename
:字符串或字符串的可迭代。通配符匹配操作符(s)的模式。
返回值:
- 包含与给定模式匹配的文件名的字符串列表。
可能产生的异常:
errors.OpError
: If there are filesystem / directory listing errors.
6、tf.gfile.IsDirectory
返回路径是否为目录。
tf.gfile.IsDirectory(dirname)
参数:
- dirname:字符串,潜在目录的路径
返回值:
- 为真,如果路径是一个目录;假的,否则
7、tf.gfile.ListDirectory
tf.gfile.ListDirectory(dirname)
这个列表的顺序是任意的。它不包含特殊条目“.”和“..”。
参数:
- dirname:字符串,目录的路径
返回值:
- [filename1, filename2,…filenameN]作为字符串
8、tf.gfile.MakeDirs
tf.gfile.MakeDirs(dirname)
如果dirname已经存在且可写,则成功。
参数:
- dirname:字符串,要创建的目录的名称
可能产生的异常:
errors.OpError
: If the operation fails.
9、tf.gfile.MkDir
tf.gfile.MkDir(dirname)
参数:
- 要创建的目录的名称注意:父目录需要存在。如果可能不存在父dirs,则使用recursive_create_dir。
可能产生的异常:
errors.OpError
: If the operation fails.
10、tf.gfile.Remove
tf.gfile.Remove(filename)
参数:
- 文件名:字符串,文件名
可能产生的异常:
errors.OpError
: Propagates any errors reported by the FileSystem API. E.g., NotFoundError if the file does not exist.
11、tf.gfile.Rename
tf.gfile.Rename(
oldname,
newname,
overwrite=False
)
参数:
- oldname:字符串,文件的路径名
- newname: string,文件需要移动到的路径名
overwrite
:布尔值,如果为false,则newname被现有文件占用是一个错误
可能产生的异常:
errors.OpError
: If the operation fails.
12、tf.gfile.Stat
tf.gfile.Stat(filename)
参数:
-
文件名:字符串,文件的路径
返回值:
- 包含路径信息的FileStatistics结构
可能产生的异常:
errors.OpError
: If the operation fails.
13、tf.gfile.Walk
tf.gfile.Walk(
top,
in_order=True
)
参数:
- top:字符串,目录名。
- in_order: bool,遍历顺序为真,post顺序为假。列出目录时发生的错误将被忽略。
产生:
- 每个结果都是一个3元组:一个目录的路径名,后面是所有子目录和叶子文件的列表。(dirname, [subdirname, subdirname,…], [filename, filename,…])作为字符串。
例:
tf.gfile.FastGFile(path,decodestyle)
函数功能:实现对图片的读取。
函数参数:
(1)、path:图片所在路径。
(2)、decodestyle:图片的解码方式。(‘r’:UTF-8编码; ‘rb’:非UTF-8编码)
import matplotlib.pyplot as plt
import tensorflow as tf
#tf.gfileGFile()函数:读取图像
image_jpg = tf.gfile.FastGFile('dog.jpg','rb').read()
image_png = tf.gfile.FastGFile('lizard.png','rb').read()
with tf.Session() as sess:
image_jpg = tf.image.decode_jpeg(image_jpg) #图像解码
print(sess.run(image_jpg))#打印解码后的图像(即为一个三维矩阵[w,h,3])
image_jpg = tf.image.convert_image_dtype(image_jpg,dtype=tf.uint8) #改变图像数据类型
image_png = tf.image.decode_png(image_png)
print(sess.run(image_jpg))
image_png = tf.image.convert_image_dtype(image_png,dtype=tf.uint8)
plt.figure(1) #图像显示
plt.imshow(image_jpg.eval())
plt.figure(2)
plt.imshow(image_png.eval())