tf.io.gfile.GFile
| Просмотреть исходный код на GitHub |
Оборачивающие средства ввода-вывода файлов без блокировки потоков.
tf.io.gfile.GFile(
name, mode='r'
)
Основные задачи модуля tf.io.gfile:
- Предоставление API, близкого к объектам ввода-вывода файлов Python,
- И реализация, основанная на API файловой системы C++ TensorFlow.
API файловой системы C++ поддерживает несколько реализаций файловых систем, включая локальные файлы, Google Cloud Storage (используя префикс gs://, и HDFS (используя префикс hdfs://). TensorFlow экспортирует их как tf.io.gfile, чтобы вы могли использовать эти реализации для сохранения и загрузки контрольных точек, записи в журналы TensorBoard и доступа к данным обучения (среди прочего). Однако, если все ваши файлы локальные, вы можете использовать обычный API файлов Python без проблем.
Примечание: хотя схожий с реализацией ввода-вывода Python, существуют семантические различия, чтобы сделать 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()
| Атрибуты | |
|---|---|
mode | Возвращает режим открытия файла. |
name | Возвращает имя файла. |
Методы
close
close()
Закрывает файл.
Должен вызываться для WritableFile, чтобы произвести сброс.
В общем случае, если вы используете шаблон менеджера контекста, вам не нужно вызывать это напрямую.
with tf.io.gfile.GFile("/tmp/x", "w") as f:
f.write("asdf\n")
f.write("qwer\n")
# implicit f.close() at the end of the block
Для облачных файловых систем, если забыть вызвать close(), это может привести к потере данных, поскольку последняя запись может не быть реплицирована.
flush
flush()
Очищает файл Writable.
Это гарантирует, что данные покинули процесс без каких-либо гарантий относительно их записи на диск. Это означает, что данные сохранятся при сбое приложения, но не обязательно при сбое ОС.
next
next()
read
read(
n=-1
)
Возвращает содержимое файла в виде строки.
Начинает чтение с текущей позиции в файле.
| Аргументы | |
|---|---|
n | Читает n байт, если n != -1. Если n = -1, читает до конца файла. |
| Возвращает | |
|---|---|
n байт файла (или весь файл) в режиме байтов или n байт строки, если в режиме строк (обычном). |
readline
readline()
Читает следующую строку, сохраняя \n. В конце файла возвращает ''.
readlines
readlines()
Возвращает все строки из файла в списке.
seek
seek(
offset=None, whence=0, position=None
)
Перемещает указатель в файле на заданный смещение. (аргументы устарели)
| Аргументы | |
|---|---|
offset | Количество байтов относительно аргумента whence. |
whence | Допустимые значения для whence: 0: начало файла (по умолчанию), 1: относительно текущей позиции файла, 2: относительно конца файла. offset обычно отрицательно. |
seekable
seekable()
Возвращает True, так как FileIO поддерживает операции случайного доступа seek()/tell().
size
size()
Возвращает размер файла.
tell
tell()
Возвращает текущую позицию в файле.
write
write(
file_content
)
Записывает file_content в файл. Добавляет в конец файла.
__enter__
__enter__()
Поддержка использования с оператором "with".
__exit__
__exit__(
unused_type, unused_value, unused_traceback
)
Поддержка использования с оператором "with".
__iter__
__iter__()
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/io/gfile/GFile