блоки данных - смонтировано S3 - как получить метаданные файла, такие как дата последнего изменения (Python) - PullRequest
0 голосов
/ 01 июля 2019

Я установил ведро s3 в свои блоки данных и могу видеть список файлов, а также могу читать файлы, используя python

ACCESS_KEY = "XXXXXXXXXX"
SECRET_KEY = "XXXXXXXXXXXXXX"
ENCODED_SECRET_KEY = SECRET_KEY.replace("/", "%2F")
AWS_BUCKET_NAME = "testbucket"
MOUNT_NAME = "awsmount1"

dbutils.fs.mount("s3a://%s:%s@%s" % (ACCESS_KEY, ENCODED_SECRET_KEY, AWS_BUCKET_NAME), "/mnt/%s" % MOUNT_NAME)
display(dbutils.fs.ls("/mnt/%s/data" % MOUNT_NAME))

Я хочу узнать дату последнего измененияфайл, который я читаю, я не смог найти много, но опция java Блок данных считывает дату последнего изменения BLOB-объекта Azure для объекта Azure BLOB. Есть ли собственный параметр python в блоке данных для чтения метаданных файла.

1 Ответ

2 голосов
/ 01 июля 2019

Если я правильно понимаю, вам нужна дата последнего изменения для монтируемого файла в блоках данных Azure с использованием Python native sdk.

Вот пример кода для получения метаданных из BLOB-объекта Azure:

from azure.storage.blob import BlockBlobService
block_blob_service = BlockBlobService(account_name='accoutName', account_key='accountKey')
container_name ='containerName'
block_blob_service.create_container(container_name)
generator = block_blob_service.list_blobs(container_name)
for blob in generator:
    lastModified= BlockBlobService.get_blob_properties(block_blob_service,container_name,blob.name).properties.last_modified
    print("\t Blob name: " + blob.name)
    print(lastModified)

Вы можете получить более подробную информацию об этом здесь .

Если вы ищете S3, то я бы предложил вам использовать Boto.oto3 возвращает объект datetime для LastModified при использовании объекта Python (S3) Object:

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Object.last_modified

Для сравнения LastModified с сегодняшней датой (Python3):

import boto3
from datetime import datetime, timezone

today = datetime.now(timezone.utc)

s3 = boto3.client('s3', region_name='eu-west-1')

objects = s3.list_objects(Bucket='my_bucket')

for o in objects["Contents"]:
    if o["LastModified"] == today:
        print(o["Key"])

Ссылка

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...