---
# System prepended metadata

title: Stage Émile

---

# Stage Émile

[TOC]

## Partie dev :computer: 

Penser à noter toutes ses questions n'importe où dans le fichier avec ce format : 

:question: Benjamin : Tout va bien ?
:question: Émile : Comment on fait xxx en Python ?

On aura ainsi un beau document de suivi

### Mise à niveau Python

Pour rendre le stage plus vivant et que tu comprennes le métier de développeur je te propose de commencer par suivre ce petit cours :
https://openclassrooms.com/fr/courses/4262331-demarrez-votre-projet-avec-python?archived-source=235344

N'hésite pas à noter toutes tes questions / remarques ici.

Suite mise à niveau : 
- https://openclassrooms.com/fr/courses/4302126-decouvrez-la-programmation-orientee-objet-avec-python
- https://openclassrooms.com/fr/courses/1206331-utilisation-avancee-des-listes-en-python


### Sujet :page_with_curl: 

Pour te mettre dans la peau d'un déveoppeur pendant ton stage, je te propose de réaliser un script Python permettant de :
- Découper un fichier CSV en plusieurs plus petits fichiers
- En respectant le format
- En demandant à l'utilisateur comment le découper

En fonction de ta vitesse de réalisation nous rajouterons plus ou moins de fonctionnalités

Ci-dessous la liste des étapes pour y parvenir

#### Lire un fichier CSV

- Lire https://fr.wikipedia.org/wiki/Comma-separated_values pour comprendre ce qu'est un fichier CSV
- Lire https://docs.python.org/fr/3/library/csv.html#csv.reader pour savoir comment lire facilement un fichier CSV depuis Python (utilisation d'une bibliothèque dédiée)
- Créer un petit fichier CSV (reprendre l'exemple de Wikipedia) qu'on appelera `toto.csv`
- Écrire un premier programme qui va lire un fichier CSV et l'afficher
- Lancer le programme
- Admirer le résultat 

#### Écrire un fichier CSV
- Lire https://docs.python.org/fr/3/tutorial/inputoutput.html#tut-files pour comprendre comment fonctionne l'ouverture de fichier. **Attention ouvrir un fichier avec le mode à 'w' va écraser tout fichier existant portant le nom passé en paramètre de la fonction open** 
- Lire https://docs.python.org/fr/3/library/csv.html#csv.writer pour savoir comment écrire un fchier CSV
- Modifier le programme précédent pour écrire le fichier CSV dans un aure fichier appelé `toto_result.csv` 
- Ouvrir le fichier une fois créé par python et vérifier qu'il est semable à `toto.csv`
- Vérifier que le caractère de séparation des champs est bien celui d'origine



#### Le couper en X fichiers de L lignes

X sera calculé automatique en fonction du nombre de lignes total du fichier et de L

- Avoir un fichier d'au moins 50 lignes
- Faire une première version avec L qui vaut 10
- Faire une deuxième version avec L qui est un paramètre (avec un nom explicite) de la fonction écrivant les fichiers
- Demander à l'utilisateur la valeur de L au lancement du programme

Indices : :bulb: 
- Pour s'entrainer tu peux t'amuser à compter le nombre de lignes du fichiers
- il va falloir fermer les fichiers écrits toutes les L lignes lues et en re-ouvrir un nouveau à chaque fois. Attention à bien gérer le dernier fichier qui sera certainement de moins de L lignes.

TODO : 
- Regarde la doc de https://docs.python.org/fr/3.9/library/os.path.html#os.path.join
- Mettre au maximum les emplacement dans des variables pour éviter les répétitions
- utiliser os.path.join pour définir l'emplacement des fichiers proprement (ca sera compatible windows et linux)
- Passer le code dans une fonction qui prend le nombre de lignes avant de couper en paramètre
- Bien fermer ce qui est ouvert avant que le programme ne finisse
- Utiliser des noms explicite pour toutes les variables (pas de "g" ou de "f" )
- Utiliser les f-string pour les concaténations de chaines de caractère plutôt que des "+"



#### S'il y a un header alors le récopier dans chaque fichier

- Demander à l'utilisateur s'il y a un header et s'il souhaite le recopier dans chaque bout de fichier

#### Proposer une option pour couper le fichier en X parties de tailles égales

Il se peut que ça ne tombe pas juste, ce n'est pas important.



## Partie veille :sleuth_or_spy: 

## Présence sur site avec Benjamin :calendar: 

- Mercredi 9
- Vendredi 11 (départ 16h30)
- Mercredi 16 
- Vendredi 18 (départ 16h30) ?

## Synchro Benjamin :calendar: 

30mn tous les jours à 16h30

## Questions :question:
- Benjamin : Est-ce-que tu as un ordinateur portable ? Sous quel OS ? oui, sous windows 10
- Benjamin : Est-ce-que tu as un document à rédiger à la fin du stage ? une présentation powerpoint
- Benjamin : As-tu besoin de réaliser des petites interviews ? Non, pas obligatoirement

## TODO Benjamin :ballot_box_with_check: 

Organiser une prise de contact avec Gregory pour la partie veille


### Ce qui a été vu en tuto: 

Liste, dictionnaire, fonctions, conditions
Modifier les chaines, les listes les dictionnaires
Boucles : while et for


## Structure

Président
- Directeur Commercial et Marketing
    - Marketing (contenu)
    - Sales (vendeurs)
    - Produit (Définir comment doit être Invenis)
    - Data Analyst (prestataire)
- Directeur Technique
    - Frontend (visible)
    - Backend (caché)
    - Compute (calcul + BigData + IA)
    - Devops (automatisation) / infra (gestion des machines)
- Responsble admin / finance