2017-04-25 2 views
0

J'ai un dossier appelé myfolder contenant plusieurs fichiers avec nom de fichier comme suit,Python - Comment télécharger des fichiers créés aujourd'hui dans un dossier à S3

ID001_2017-04-15.csv, ID002_2017-04-15.csv, ID001_2017-04-16.csv, ID002_2017-04-16.csv, 
ID001_2017-04-17.csv, ID002_2017-04-17.csv, ID001_2017-04-18.csv, ID002_2017-04-18.csv 

La date du nom de fichier est la date du fichier créé. Par exemple, le fichier ID001_2017-04-17.csv est créé sur 2017-04-17. Voici comment je téléchargé tous les fichiers dans un dossier sur Amazon S3,

import boto3 

def upload_files(path): 
    session = boto3.Session(
       aws_access_key_id = 'this is my access key', 
       aws_secret_access_key = 'this is my secret key', 
       region_name = 'this is my region' 
      ) 
    s3 = session.resource('s3') 
    bucket = s3.Bucket('this is my bucket') 

    for subdir, dirs, files in os.walk(path): 
     for file in files: 
      full_path = os.path.join(subdir, file) 
      with open(full_path, 'rb') as data: 
       bucket.put_object(Key = full_path[len(path) + 1:], Body = data) 

if __name__ == "__main__": 
    upload_files('path to myfolder') ## Replace this with your folder directory 

Ma question est puis-je télécharger uniquement les fichiers qui sont créés aujourd'hui pour Amazon S3?

+0

Jetez un oeil à http://stackoverflow.com/questions/5141437/filtering-os-walk-dirs-and-files - et filtrez la date d'aujourd'hui. – stdunbar

+1

Si vous avez l'intention de synchroniser des fichiers d'un répertoire local vers S3, vous pouvez utiliser [AWS Command-Line Interface (CLI)] (http://aws.amazon.com/cli/) avec une synchronisation aws s3 'commande. C'est beaucoup plus facile que d'écrire votre propre code. –

+0

@JohnRotenstein Merci. Oui, je veux synchroniser les fichiers du répertoire local vers S3. Est-il possible de simplement synchroniser les fichiers générés par S3 aujourd'hui en utilisant CLI? – Peggy

Répondre

0

Ceci va vérifier si un fichier a été créé aujourd'hui:

import os.path 
import datetime.datetime 

# Create a datetime object for right now: 
now = datetime.datetime.now() 
# Create a datetime object for the file timestamp: 
ctime = os.path.getctime('example.txt') 
filetime = datetime.datetime.fromtimestamp(ctime) 

# Check if they're the same day: 
if filetime.year == now.year and filetime.month == now.month and filetime.day = now.day: 
    print('File was created today') 

Si vous mettez quelque chose comme ça dans votre boucle for file in files:, vous devriez être en mesure d'isoler les fichiers créés aujourd'hui.