Краткая информация
Создает объект 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.
| Object |
Обзор метода
Метод | Описание |
chdir (path) | Изменяет рабочую папку относительно текущей рабочей папки. |
close (handle) | Закрывает открытый дескриптор файла. |
copy (src, dst, {options}) | Копирует файл из источника в место назначения. Для облачного объекта AIO:
Для локального объекта AIO:
|
copytree (src, dst, {options}) | Копирует содержимое из одной папки в другую. Для облачного объекта AIO:
Для локального объекта AIO:
|
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:
Для локального объекта AIO:
|
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.
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.
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.
Примечание: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 | Возвращает объект 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.
(Значение по умолчанию — 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