Utiliser une variable comme un fichier
Bonjour à tous
Actuellement débutant sur Python, je suis face à un problème dont je ne trouve pas de solution.
Environnement de travail :
1)Version de python : 3.7
2)Base de données : BigQuery
3)Lieu de stockage de fichier: Google Cloud Storage
Contraintes techniques :
Le programme en python est une Cloud Function sur la plateforme Google.
Il est donc limité au contrainte d'une Cloud Function :
1) Temps de traitement maximum 9 minutes
2) Mémoire maximum 2 Go
3) Mémoire physique 5 Go pour toutes les Cloud Function
Objectif :
Le but est de générer 1 fichier structuré quotidiennement.
1)Les données sources sont dans la base de données BigQuery.
2)Le programme Python récupère les données source et génère un fichier dans Google Cloud Storage.
3)La structure du fichier contient un modèle défini ci-dessous :
COMMANDE(10 caractères, position 1) Numero commande(10 caractères, position 11)
PRODUIT(10 caractères, position 1) Libellé produit(18 caractères, position 11)
Exemple de contenu d'un fichier
Citation:
COMMANDE**NUMCMD0001
PRODUIT***AGENDA************
PRODUIT***GOMME*************
COMMANDE**NUMCMD0002
PRODUIT***STYLO*************
PRODUIT***CAHIER***********
PRODUIT***CLASSEUR**********
Actuellement j'arrive à afficher la structure du fichier dans mon terminal en faisant un PRINT pour chaque ligne.
Je pense également pouvoir créer un fichier et y insérer le contenu en mode "APPEND" dans mon environnement local.
Pour répondre à mon besoin je pourrais donc créer ce fichier en local et le transférer sur Google Cloud Storage.
Néanmoins, à cause de la contrainte technique numéro 3, je souhaiterai écrire le fichier directement dans Google Cloud Storage.
Surtout que pour la 1ère exécution j'ai une phase d'initialisation qui risque de générer une taille importante du fichier.
Ci-dessous un extrait du programme qui créer un fichier dans Google Cloud Storage avec comme contenu 'coucou toto'.
Code:
1 2 3 4 5 6 7
| def upload_blob(Repertoire_depot, contenu_fichier, libelle_fichier):
storage_client = storage.Client()
bucket = storage_client.get_bucket(Repertoire_depot)
blob = bucket.blob(libelle_fichier)
blob.upload_from_string(contenu_fichier)
upload_blob('Dossier_test', 'coucou toto' , 'Fichier_01') |
En regardant la documentation de l'API, il ne m'est impossible d'ouvrir le fichier et d'y insérer mes différentes lignes en append.
L'url de la documentation : https://googleapis.dev/python/storage/latest/blobs.html
Je souhaite donc insérer le contenu de mon fichier avec sa structure dans une variable var_donnee et ensuite utiliser cette variable pour créer le fichier dans la cible comme ceci :
Code:
upload_blob('Dossier_test', var_donnee , 'Fichier_01')
Et c'est là que j'ai besoin de votre aide :
1) Est-ce que je suis complètement à côté de la plaque, et il faut que je résonne autrement que par cette procédé ?
2) Est-ce qu'il y a une limite maximale sur le contenu d'une variable ?
3) Comment puis je affecter plusieurs valeurs dans une même variable sans écraser la valeur déjà insérée ?
Pour ligne_commande dans commande
(a)var_donnee = donnee_commande,
Pour ligne_produit dans produit
(b)var_donnee = donnee_produit,
(b)L'affectation de la variable à cette ligne va écraser l'affectation à la variable (a)
(b)Si il y a plusieurs ligne de produit, la variable var_donnee ne va récupérer que la ligne du dernier produit
Cette variable serait en fait comme un fichier :
Ouverture => insertion de plusieurs lignes à des temps différents => Fermeture
Je ne sais pas si je suis assez claires dans mes explications.
Je vous remercie par avance pour ceux ou celles qui pourraient m'aiguiller.