Estoy escribiendo una secuencia de comandos de python para cargar archivos a s3 usando boto. Solo quiero cargar archivos modificados que puedo verificar por su última fecha de modificación. Pero no puedo encontrar la API para obtener la última modificación en boto API.¿Cómo puedo obtener la fecha de última modificación de los objetos S3 con boto?
Respuesta
He aquí un fragmento de código/boto Python que imprimirá el atributo last_modified de todas las claves en un cubo:
>>> import boto
>>> s3 = boto.connect_s3()
>>> bucket = s3.lookup('mybucket')
>>> for key in bucket:
print key.name, key.size, key.last_modified
index.html 13738 2012-03-13T03:54:07.000Z
markdown.css 5991 2012-03-06T18:32:43.000Z
>>>
Para el registro esto no es perfecto; el last_modified es una cadena, cuando lo que probablemente desee es un datetime –
Si desea un DateTime, puede usar boto.utils.parse_ts para analizar la cadena TZ y devolver un objeto DateTime. – garnaat
por extraño que parezca, la función parse_ts no funciona con el formato devuelto por key.last_modified obtengo datos de tiempo 'Vie, 20 Jul 2012 16:57:27 GMT' no coincide con el formato '% Y-% m-% dT % H:% M:% S.% fZ ' –
Si está utilizando Django y django-storages, que puede un API no oficial en el s3boto backend:
>>> from storages.backends.s3boto import _parse_datestring
>>> _parse_datestring("Fri, 20 Jul 2012 16:57:27 GMT")
datetime.datetime(2012, 7, 21, 2, 57, 27)
Por desgracia, como de Django almacenamientos 1.1.5, esto da una fecha y hora ingenuo. Es necesario utilizar django.utils.timezone
para crear una versión conscientes:
>>> from django.utils import timezone
>>> naive = _parse_datestring("Fri, 20 Jul 2012 16:57:27 GMT")
>>> timezone.make_aware(naive, timezone.get_current_timezone())
datetime.datetime(2012, 7, 21, 2, 57, 27, tzinfo=<DstTzInfo 'Australia/Brisbane' EST+10:00:00 STD>)
convertir el atributo last_modified a struct_time como se indica a continuación
import time
for key in bucket.get_all_keys():
time.strptime(key.last_modified[:19], "%Y-%m-%dT%H:%M:%S")
Esto le dará una time.struct_time (tm_year, tm_mon, tm_mday, tm_hour tupla, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst) para cada tecla en el cubo S3
esto está funcionando (TNX a jdennison desde arriba):
después de conseguir la llave de s3:
import time
from time import mktime
from datetime import datetime
modified = time.strptime(key.last_modified, '%a, %d %b %Y %H:%M:%S %Z')
#convert to datetime
dt = datetime.fromtimestamp(mktime(modified))
ha respondido al problema incorrecto: el problema consiste en obtener la fecha de los archivos s3, no en formatearla. – AdrianBR
- 1. Obtener la fecha de la última modificación de una URL
- 2. Obtener la última fecha de modificación de un archivo remoto
- 3. Directorio última fecha de modificación
- 4. ¿Cómo puedo obtener la fecha de la última modificación del conjunto?
- 5. Django Boto S3 Acceso
- 6. Última modificación de carpetas
- 7. ¿Cómo obtener la última fecha de modificación del archivo en la línea de comandos de Windows?
- 8. Conseguir un archivo de fecha de última modificación
- 9. play-marco conseguir la fecha de última modificación de archivo
- 10. Amazon S3 boto - cómo eliminar la carpeta?
- 11. Obtener la última fecha de modificación de un archivo en VB6
- 12. Obtener la fecha de modificación del archivo en VB.NET
- 13. Obtener la fecha de modificación mediante FTP usando PHP/CURL
- 14. Amazon S3 boto: ¿cómo crear una carpeta?
- 15. ¿Recibe la última fecha de modificación del archivo de los archivos de datos de la aplicación?
- 16. Error "No se pudieron cargar los enlaces S3 de Boto".
- 17. Django: modelos última fecha de modificación y número de mod
- 18. ¿Cómo puedo obtener el tiempo de última modificación con python3 urllib?
- 19. Obtener la última fecha de modificación de un archivo en C
- 20. ¿Cómo recursivo los archivos de la lista con el tamaño y la última hora de modificación?
- 21. ¿Cómo ordenar la salida de "grep -l" cronológicamente por la última fecha de modificación?
- 22. ¿Cómo convertir el archivo con la última marca de modificación a una fecha?
- 23. ¿Cuál es la mejor manera de configurar los campos de última modificación y registro de fecha?
- 24. Obtener archivo Última modificación de tiempo y comparar
- 25. Última modificación de un directorio en OSX
- 26. ¿Cómo obtengo la última modificación de un recurso de Java?
- 27. Obtener carpeta (o subarchivos/carpetas) última fecha y hora de modificación
- 28. Cómo obtener el directorio más reciente (última modificación) [C#]
- 29. Cache Expire de control con la última modificación
- 30. Obteniendo la última fecha de modificación de archivos en el directorio usando PHP
Ver http://mashupguide.net/1.0/html/ch16s07.xhtml hacia la parte inferior. Implica que un cubo tiene claves y las claves tienen un atributo 'last_modified'. ¿Es eso lo que estás buscando? Descargo de responsabilidad: No he usado S3 :) – gfortune
Gracias gforture. Es realmente útil. – vreal