當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。