AIO

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

Создает объект 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)

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

close (handle)

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

copy (src, dst, {options})

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

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

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

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

  • Значения src и dst могут быть относительным путем от текущей рабочей папки, либо абсолютным путем.
copytree (src, dst, {options})

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

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

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

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

  • Значения src и dst могут быть относительным путем от текущей рабочей папки, либо абсолютным путем.
exists (path)

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

getatime (path)

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

getctime (path)

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

getcwd ({type})

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

getmtime (path)

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

getpath (path, {type})

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

getsize (path)

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

isdir (path)

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

isfile (path)

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

listdir ({path}, {type})

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

makedirs (path)

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

mkdir (path)

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

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

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

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

remove (path)

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

removefiles (path)

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

rename (src, dst)

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

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

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

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

  • Значения src и dst могут быть относительным путем от текущей рабочей папки, либо абсолютным путем.
rmtree (path)

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

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

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

Методы

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/u-agu/arcio")  # 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})
ПараметрОписаниеТип данных
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})
ПараметрОписаниеТип данных
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)
ПараметрОписаниеТип данных
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})
ПараметрОписаниеТип данных
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,...]

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)
ПараметрОписаниеТип данных
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})
ПараметрОписаниеТип данных
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
Возвращаемое значение
Тип данныхОписание
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