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 To construct an |
String |
Свойства
| Имя | Объяснение | Тип данных |
|---|---|---|
|
cloud (Только для чтения) |
Экземпляр класса, который имеет методы, специфичные для облака. Он используется для получения сведений об облачном хранилище, которое использовалось при создании объекта Возвращает объект
|
Object |
Методы
chdir(path)
Изменяет рабочую папку относительно текущей рабочей папки.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
path |
A relative path from the current working directory or an absolute path (absolute |
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 Примечание:An instance of this class is returned by the |
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.
Syntax— Example— (Значение по умолчанию — 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.
Syntax— Example— (Значение по умолчанию — 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 |
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) |
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 |
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 |
String |
|
type (Дополнительный) |
Specifies the path style for the returned URI (for cloud only). The data type is Available options are (Значение по умолчанию — 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 |
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 |
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 |
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 (Значение по умолчанию — None) |
String |
|
type (Дополнительный) |
Specifies the path style for the returned URI (for cloud only). The data type is Available options are (Значение по умолчанию — 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 |
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 |
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 |
String |
|
mode (Дополнительный) |
Specifies the mode that will be used for opening a file.
Примечание:Only read mode honors the encoding parameter. (Значение по умолчанию — None) |
String |
|
encoding (Дополнительный) |
The type of encoding that will be used to open a file.
(Значение по умолчанию — 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 |
Возвращает объект |
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 |
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 |
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 |
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 |
String |
|
depth (Дополнительный) |
The recursion depth.
(Значение по умолчанию — 0) |
Integer |
|
type (Дополнительный) |
Specifies the path style for the returned URI (for cloud only). The data type is Available options are (Значение по умолчанию — 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 |
Итерация объекта |
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