当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.io.gfile.GFile用法及代码示例


没有线程锁定的文件 I/O 包装器。

用法

tf.io.gfile.GFile(
    name, mode='r'
)

属性

  • mode 返回打开文件的模式。
  • name 返回文件名。

tf.io.gfile 模块的主要作用是:

  1. 提供接近 Python 的文件 I/O 对象的 API,以及
  2. 提供基于 TensorFlow 的 C++ FileSystem API 的实现。

C++ FileSystem API 支持多种文件系统实现,包括本地文件、Google Cloud Storage(使用 gs:// 前缀和 HDFS(使用 hdfs:// 前缀)。TensorFlow 将这些导出为 tf.io.gfile ,以便您可以使用这些用于保存和加载检查点、写入 TensorBoard 日志和访问训练数据(以及其他用途)的实现。但是,如果您的所有文件都是本地文件,则可以使用常规 Python 文件 API 没有任何问题。

注意:尽管类似于 Python 的 I/O 实现,但语义上的差异使tf.io.gfile 更有效地支持文件系统。例如,在第一次写入调用以最小化网络文件系统中的 RPC 调用之前,不会打开写入模式文件。

一旦获得GFile 对象,就可以像使用任何 Python 的文件对象一样以大多数方式使用它:

with open("/tmp/x", "w") as f:
  f.write("asdf")
4
with tf.io.gfile.GFile("/tmp/x") as f:
  f.read()
'asdf'

不同之处在于,如果支持,您可以指定 URI 方案以使用其他文件系统(例如,gs:// 用于 GCS,s3:// 用于 S3 等)。以file:// 为例,我们有:

with tf.io.gfile.GFile("file:///tmp/x", "w") as f:
  f.write("qwert")
  f.write("asdf")
tf.io.gfile.GFile("file:///tmp/x").read()
'qwertasdf'

您还可以直接读取文件的所有行:

with tf.io.gfile.GFile("file:///tmp/x", "w") as f:
  f.write("asdf\n")
  f.write("qwer\n")
tf.io.gfile.GFile("/tmp/x").readlines()
['asdf\n', 'qwer\n']

您可以遍历这些行:

with tf.io.gfile.GFile("file:///tmp/x", "w") as f:
  f.write("asdf\n")
  f.write("qwer\n")
for line in tf.io.gfile.GFile("/tmp/x"):
  print(line[:-1]) # removes the end of line character
asdf
qwer

如果底层文件系统支持随机访问读取是可能的:

with open("/tmp/x", "w") as f:
  f.write("asdfqwer")
f = tf.io.gfile.GFile("/tmp/x")
f.read(3)
'asd'
f.seek(4)
f.tell()
4
f.read(3)
'qwe'
f.tell()
7
f.close()

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.io.gfile.GFile。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。