Skip to main content

AIO

Краткая информация

Создает объект ArcIO (AIO) для унифицированной обработки локальных и облачных файлов, а также хранилищ данных, который можно использовать в Python.

Используя этот объект, вы можете выполнять такие задачи, как копирование файлов из одного места в другое, переименование или удаление папки, а также операции, связанные с файлами, включая чтение и запись. Объект AIO можно использовать для облачных хранилищ, указав на входе путь к файлу .acs. Для локального хранилища данных создайте объект AIO, указав путь к локальной папке, которая затем будет использоваться в качестве текущего рабочего каталога, или не указывая никаких значений параметров.

Обсуждение

Объект AIO поддерживает файловые операции независимо от файловой системы. В настоящее время объект Windows поддерживает Linux и основные реализации облачных хранилищ.

Помимо локальной файловой системы и путей UNC, объект AIO поддерживает следующие URI виртуального облака для инициализации классов:

  • Файлы подключений ACS (.acs) — хранят информацию о подключении в двоичном постоянно зашифрованном формате. Подробнее см. инструмент Создать файл подключения к облачному хранилищу.

  • /cloudStores json — хранит информацию о подключении в формате JSON для файлов ArcGIS Enterprise.

  • /vsi paths — GDAL — это предпочтительный URI для файловых систем в независимых файловых операциях. Подробнее см. GDAL Virtual File Systems.

  • http[s] paths - URL-адрес поставщика облачных услуг к ресурсам, которые могут содержать такую информацию о подключении, как Microsoft Azure SAS.

  • Префиксы схемы URI, специфичные для облачного поставщика, такие как s3:// или abfs://.

Примечание:

Информацию о подключении также можно использовать через IAM/RBAC, параметры среды GDAL и файлы конфигурации CLI для конкретного поставщика в папках .aws, .azure или bin/gdalrc.

Доступ ко всем облачным методам можно получить с помощью свойства cloud.

При работе с облачными операциями методы класса поддерживают относительные пути к текущей рабочей директории (aio.getcwd). Если используются абсолютные пути, поддерживаются только пути vsi. Эти типы операций по умолчанию возвращают пути vsi. Тип пути вывода можно переопределить, указав перечисление CloudPathType.

Эти методы следуют тем же соглашениям и поведению, что и методы собственной файловой системы Python.

Синтаксис

AIO({path})

Имя Объяснение Тип данных

path

(Дополнительный)

To construct an AIO object to handle a cloud store, use the .acs file path.

To construct an AIO object to handle a local file store, this parameter can be a local folder path or it can be left empty. If a local folder path is provided, it will be used as the current working directory.

String

Свойства

Имя Объяснение Тип данных

cloud

(Только для чтения)

Экземпляр класса, который имеет методы, специфичные для облака. Он используется для получения сведений об облачном хранилище, которое использовалось при создании объекта AIO.

Возвращает объект CloudOp.

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.cloud.getprovidername()

Object

Методы

chdir(path)

Изменяет рабочую папку относительно текущей рабочей папки.

Имя Объяснение Тип данных

path

A relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.chdir(r"aio")  # Relative path
cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.chdir(r"/vsis3/data/aio")  # Absolute VSI path
local_io = AIO(r"C:\data")
local_io.chdir(r"aio")

close(handle)

Закрывает открытый дескриптор файла.

Имя Объяснение Тип данных

handle

An open file handle.

The data type is AIOFile.

Примечание:

An instance of this class is returned by the AIO object's open method.

Object

cloud_io = AIO(r"C:\data\datacloud.acs")
rcsfile = cloud_io.open(r'testfile.txt', 'r')
rcsfile.read(size=4)
cloud_io.close(rcsfile)

copy(src, dst, {options})

Копирует файл из источника в место назначения.

Для облачного объекта AIO:

  • Если значение src или dst - это локальный путь, используйте абсолютный локальный путь.

  • Если значение src или dst - это облачный путь, используйте относительный путь от текущей рабочей папки или абсолютного облачного пути vsi.

  • Если значения src и dst - это облачные пути, используйте абсолютные облачные пути vsi.

Для локального объекта AIO:

  • Значения src и dst могут быть относительным путем от текущей рабочей папки, либо абсолютным путем.
Имя Объяснение Тип данных

src

The source path of the file.

String

dst

The target path of the file.

String

options

(Дополнительный)

Specifies the options that will be used.

  • RECURSIVE—Subdirectories and their contents will be recursively copied. This option is only applicable for folder operations.

  • SYNC_STRATEGY—The criteria that will be used for overwriting if the target file exists.

  • NUM_THREADS—The number of threads that will be used for parallel file copying.

  • CHUNK_SIZE—The maximum chunk size (in bytes) that will be used to split large objects when uploading or downloading.

Syntax—RECURSIVE=[YES|NO], SYNC_STRATEGY=[TIMESTAMP|ETAG|OVERWRITE], NUM_THREADS=(integer) CHUNK_SIZE=(integer) [x-amz-*|x-goog-*|x-ms-*=(value)]

Example—{'RECURSIVE':'YES', 'SYNC_STRATEGY':'OVERWRITE', 'NUM_THREADS':'10', 'CHUNK_SIZE':'8'}

(Значение по умолчанию — None)

Dictionary

Возвращаемое значение

Тип данных Объяснение

String

Путь назначения.

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.copy(r'/vsis3/data/list/utf8_test.json',
              r'/vsis3/data/list/new_dir_new/utf8_test.json')
local_io = AIO(r"C:\data")
local_io.copy(r"C:\data\datatest.json", r"C:\data_temp\datatest.json")

copytree(src, dst, {options})

Копирует содержимое из одной папки в другую.

Для облачного объекта AIO:

  • Если значение src или dst - локальный путь, используйте абсолютный локальный путь.

  • Если значение src или dst - облачный путь, используйте относительный путь от текущей рабочей папки или абсолютного облачного пути vsi.

  • Если значения src и dst - облачные пути, используйте абсолютные облачные пути vsi.

Для локального объекта AIO:

  • Значения src и dst могут быть относительным путем от текущей рабочей папки, либо абсолютным путем.
Имя Объяснение Тип данных

src

The source path of the file.

String

dst

The target path of the file.

String

options

(Дополнительный)

Specifies the options that will be used.

  • RECURSIVE—Subdirectories and their contents will be recursively copied. This option is only applicable for folder operations.

  • SYNC_STRATEGY—The criteria that will be used for overwriting if the target file exists.

  • NUM_THREADS—The number of threads that will be used for parallel file copying.

  • CHUNK_SIZE—The maximum chunk size (in bytes) that will be used to split large objects when uploading or downloading.

Syntax—RECURSIVE=[YES|NO], SYNC_STRATEGY=[TIMESTAMP|ETAG|OVERWRITE], NUM_THREADS=(integer) CHUNK_SIZE=(integer) [x-amz-*|x-goog-*|x-ms-*=(value)]

Example— {'RECURSIVE':'YES', 'SYNC_STRATEGY':'OVERWRITE', 'NUM_THREADS':'10', 'CHUNK_SIZE':'8'}

(Значение по умолчанию — None)

Dictionary

Возвращаемое значение

Тип данных Объяснение

String

Путь назначения.

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.copytree(r'/vsis3/data/list', r'/vsis3/data/data_new_dir')
local_io = AIO(r"C:\data")
local_io.copytree(r"C:\data\list", r"C:\data\data_new_dir")

exists(path)

Проверяет, существует ли путь.

Используйте для объекта CloudFileOp метод clearcache перед вызовом метода exists, чтобы он генерировал правильные результаты, даже если внешний процесс обновляет облачное хранилище.

Имя Объяснение Тип данных

path

A relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

Возвращаемое значение

Тип данных Объяснение

Boolean

Истина, если папка или файл существует; в противном случае — Ложь.

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.exists(r"C:\data\datacloud.acs\data")

getatime(path)

Получает время доступа к файлу.

Имя Объяснение Тип данных

path

The path for which the access time will be obtained. The value can be a relative path from the current working directory or an absolute path.

String

Возвращаемое значение

Тип данных Объяснение

Double

Время доступа в секундах с начала эпохи.

local_io = AIO(r"C:\data")
local_io.getatime(r"data.json")

getctime(path)

Получает время создания файла для файла.

Имя Объяснение Тип данных

path

The path for which the creation time will be obtained. The value can be a relative path from the current working directory or an absolute path.

String

Возвращаемое значение

Тип данных Объяснение

Double

Время создания в секундах с начала эпохи.

local_io = AIO(r"C:\data")
local_io.getctime(r"data.json")

getcwd({type})

Получает текущий рабочий каталог.

Имя Объяснение Тип данных

type

(Дополнительный)

Specifies the path style for the returned URI (for cloud only). The data type is CloudPathType.

Available options are CloudPathType.VSI, CloudPathType.ACS, CloudPathType.HTTP, and CloudPathType.CLOUDSTORES.

(Значение по умолчанию — CloudPathType.VSI)

Object

Возвращаемое значение

Тип данных Объяснение

String

Текущий рабочий каталог.

local_io = AIO()
local_io.getcwd()
cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.getcwd()

getmtime(path)

Получает время изменения файла для файла.

Имя Объяснение Тип данных

path

The relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

Возвращаемое значение

Тип данных Объяснение

Double

Время изменения файла в секундах с начала эпохи.

local_io = AIO(r"C:\data")
local_io.getmtime(r"data.json")
cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.getmtime(r"data.json")

getpath(path, {type})

Создание пути URI.

Имя Объяснение Тип данных

path

The relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

type

(Дополнительный)

Specifies the path style for the returned URI (for cloud only). The data type is CloudPathType.

Available options are CloudPathType.VSI, CloudPathType.ACS, CloudPathType.HTTP, and CloudPathType.CLOUDSTORES.

(Значение по умолчанию — CloudPathType.VSI)

Object

Возвращаемое значение

Тип данных Объяснение

String

Созданный путь URI.

from arcpy import CloudPathType
cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.getpath('cog.tif', CloudPathType.HTTP)

getsize(path)

Получает размер файла в байтах.

Имя Объяснение Тип данных

path

The relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

Возвращаемое значение

Тип данных Объяснение

Integer

Размер файла в байтах.

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.getsize(r'cog.tif')

isdir(path)

Проверяет, является ли путь папкой.

Имя Объяснение Тип данных

path

A relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

Возвращаемое значение

Тип данных Объяснение

Boolean

Истина, если папка существует; в противном случае — Ложь.

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.isdir(r'cog')

isfile(path)

Проверяет, является ли путь файлом.

Имя Объяснение Тип данных

path

A relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

Возвращаемое значение

Тип данных Объяснение

Boolean

Истина, если файл существует; в противном случае — Ложь.

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.isfile(r'cog')

listdir({path}, {type})

Нерекурсивно выводит список содержимого папки.

Имя Объяснение Тип данных

path

(Дополнительный)

The relative path from the current working directory or an absolute path (absolute vsi path for cloud).

(Значение по умолчанию — None)

String

type

(Дополнительный)

Specifies the path style for the returned URI (for cloud only). The data type is CloudPathType.

Available options are CloudPathType.VSI, CloudPathType.ACS, CloudPathType.HTTP, and CloudPathType.CLOUDSTORES.

(Значение по умолчанию — CloudPathType.VSI)

Object

Возвращаемое значение

Тип данных Объяснение

String

Список имен файлов в папке.

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.listdir('data_folder')
from arcpy import CloudPathType
cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.listdir('data_folder', CloudPathType.ACS)
local_io = AIO(r"C:\data")
local_io.listdir()

makedirs(path)

Рекурсивно создает папку.

Имя Объяснение Тип данных

path

A relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.makedirs(r"datasensor\datatest\data")

mkdir(path)

Создает папку.

Имя Объяснение Тип данных

path

A relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.mkdir(r'cog')

open(path, {mode}, {encoding}, {mime})

Открывает дескриптор файла.

Дескриптор должен быть явно закрыт.

Имя Объяснение Тип данных

path

A relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

mode

(Дополнительный)

Specifies the mode that will be used for opening a file.

  • r—The file will be opened in read mode.

  • w—The file will be opened in write mode.

  • rb—The file will be opened in binary format for reading.

  • wb—The file will be opened in binary format for writing.

Примечание:

Only read mode honors the encoding parameter.

(Значение по умолчанию — None)

String

encoding

(Дополнительный)

The type of encoding that will be used to open a file.

  • utf-8—UTF-8 encoding will be used. This is the default.

  • utf-16—UTF-16 encoding will be used.

  • ascii—ASCII encoding will be used.

(Значение по умолчанию — utf-8)

String

mime

(Дополнительный)

The Multipurpose Internet Mail Extensions (MIME) headers. It is recommended that you set MIME headers when creating the file for faster creation and setting of metadata.

(Значение по умолчанию — None)

Dictionary

Возвращаемое значение

Тип данных Объяснение

File

Возвращает объект AIOFile.

from arcpy import AIO
local_io = AIO(r"C:\data")
rcsfile = local_io.open(r'testfile.txt', 'r')
rcsfile.write("This is a test file.")
rcsfile.close()
from arcpy import AIO
cloud_io = AIO(r"C:\data\datacloud.acs")
rcsfile = cloud_io.open(r"C:\data\info\datafile.txt", 'w', mime={'Content-Type': 'text/plain'})
rcsfile.write("This is a test file.")
rcsfile.close()
# Using with statement (context manager to close the opened file)
cloud_io = AIO(r"C:\data\datacloud.acs")
with cloud_io.open(r"C:\data\info\datafile.txt", 'w', mime={'Content-Type': 'text/plain'}) as rcsfile:
    rcsfile.write("This is a test file.")

remove(path)

Удаляет файл.

Имя Объяснение Тип данных

path

A relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.remove(r'rcsfile.txt')
local_io = AIO(r"c:\data")
local_io.remove(r'rcsfile.txt')

removefiles(path[path,...])

Удалить несколько файлов.

Имя Объяснение Тип данных

path[path,...]

The relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

Возвращаемое значение

Тип данных Объяснение

List

Возвращает список путей, которые не были удалены из-за сбоя.

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.removefiles(['/vsis3/data/list/to_be_deleted/datatest.json','/vsis3/u-agu/list/to_be_deleted/data_new.json'])
local_io = AIO(r"c:\data")
local_io.removefiles([r'C:\data\datatest.json',r'C:\data\data_new.json'])

rename(src, dst)

Переименовывает или перемещает файл или папку. Переименование облачных файлов требует больших вычислительных ресурсов, поскольку копирование и удаление выполняются на стороне сервера.

Для облачного объекта AIO:

  • Если значение src или dst - локальный путь, используйте абсолютный локальный путь.

  • Если значение src или dst - облачный путь, используйте относительный путь от текущей рабочей папки или абсолютного облачного пути vsi.

  • Если значения src и dst - облачные пути, используйте абсолютные облачные пути vsi.

Для локального объекта AIO:

  • Значения src и dst могут быть относительным путем от текущей рабочей папки, либо абсолютным путем.
Имя Объяснение Тип данных

src

The source path of the file.

String

dst

The target path of the file.

String

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.rename(r'to_be_renamed/cog.tif',r'to_be_renamed/cognew.tif')
local_io = AIO(r"C:\data")
local_io.rename(r'test.json',r'new_test.json')

rmtree(path)

Рекурсивно удаляет папку и ее содержимое.

Имя Объяснение Тип данных

path

The relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.rmtree(r"aio")  # Relative path
cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.rmtree(r"/vsis3/data/arcio")  # Absolute VSI path
local_io = AIO(r"C:\data")
local_io.rmtree(r"aio")

scandir(path, {depth}, {type}, {prefix})

Возвращает итерацию записей в папке.

Имя Объяснение Тип данных

path

The relative path from the current working directory or an absolute path (absolute vsi path for cloud).

String

depth

(Дополнительный)

The recursion depth.

  • A value of -1 is for recursive scanning.

  • A value of 0 is for scanning the current directory.

  • A value greater than 0 (>0) is for an arbitrary level.

(Значение по умолчанию — 0)

Integer

type

(Дополнительный)

Specifies the path style for the returned URI (for cloud only). The data type is CloudPathType.

Available options are CloudPathType.VSI, CloudPathType.ACS, CloudPathType.HTTP, and CloudPathType.CLOUDSTORES.

(Значение по умолчанию — CloudPathType.VSI)

Object

prefix

(Дополнительный)

A filter to select filenames that start with the specified prefix.

This is optimized for the cloud, as the filtering is handled by the BLOB storage API.

(Значение по умолчанию — None)

String

Возвращаемое значение

Тип данных Объяснение

Iterable

Итерация объекта AIODirEntry.

cloud_io = AIO(r"C:\data\datacloud.acs")
# Depth = 0, performs cur dir scanning only
from arcpy import CloudPathType
for item in cloud_io.scandir(r'list', depth=0, type=CloudPathType.HTTP):
    print(item.path)
    print(item.is_dir())
    print(item.is_file())
    ob = item.stat()
    print(ob.st_mode)
    # Cloud specific operations through cloud property
    print(item.cloud.getvsipath())
    print(item.cloud.getpath(CloudPathType.ACS))
local_io = AIO(r"c:\data")
# Depth = -1, performs recursive scanning
for item in local_io.scandir(r'aio', -1):
    print(item.name)
    print(item.path)
    print(item.is_dir())
    print(item.is_file())
    ob = item.stat()
    print(ob.st_mode)

Пример кода

# To create an AIO object based on cloud store
cloud_io = AIO(r"C:\data\datacloud.acs")
cloud_io.getcwd()
cloud_io.listdir(r'aio')
# aio is a virtual folder in the cloud store referred in datacloud.acs
# To create an AIO object based on local file system
local_io = AIO()
local_io.getcwd()  # Returns the current working directory
# To create an AIO object based on local file system with path parameter
local_io = AIO(r"C:\data")  # Set the current working directory as C:\data
local_io.getcwd()  # Return the current working directory that is C:\data