209 lines
5.4 KiB
Markdown
209 lines
5.4 KiB
Markdown
# Fichiers
|
|
|
|
|
|
|
|
#### Fonction open:
|
|
|
|
##### Ouvrir un fichier:
|
|
|
|
```python
|
|
fichier = open("test.py","r")
|
|
print(fichier)
|
|
fichier.close()
|
|
|
|
>>> <_io.TextIOWrapper name='test.py' mode='r' encoding='UTF-8'>
|
|
```
|
|
|
|
|
|
|
|
##### Ouvrir et afficher un fichier:
|
|
|
|
```python
|
|
fichier = open("test.py","r")
|
|
print(fichier.read())
|
|
fichier.close()
|
|
```
|
|
|
|
Autre syntaxe:
|
|
|
|
```python
|
|
with open("test.py","r") as fichier:
|
|
print(fichier.read())
|
|
```
|
|
|
|
Parcourrir un fichier ligne par ligne:
|
|
|
|
```python
|
|
>>> fichier = open("serve.py","r")
|
|
>>> for x in fichier:
|
|
... print(x)
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
##### Ecrire dans un fichier (à la suite, sur une nouvelle ligne):
|
|
|
|
```python
|
|
fichier = open("test.py","a")
|
|
fichier.write("\n\n\"\"\" Commentaire \"\"\"")
|
|
fichier.close()
|
|
```
|
|
|
|
|
|
|
|
##### Type d'ouverture:
|
|
|
|
```python
|
|
r, pour une ouverture en lecture (READ).
|
|
w, pour une ouverture en écriture (WRITE), à chaque ouverture le contenu du fichier est écrasé. Si le fichier n'existe pas python le crée.
|
|
a, pour une ouverture en mode ajout à la fin du fichier (APPEND). Si le fichier n'existe pas python le crée.
|
|
b, pour une ouverture en mode binaire.
|
|
t, pour une ouverture en mode texte.
|
|
x, crée un nouveau fichier et l'ouvre pour écriture
|
|
```
|
|
|
|
##### Test si un fichier existe:
|
|
|
|
```python
|
|
import os
|
|
if os.path.exists("serve.py"):
|
|
print("Le fichier existe")
|
|
else:
|
|
print("Le fichier n'existe pas")
|
|
```
|
|
|
|
##### Supprimer un fichier:
|
|
|
|
```python
|
|
import os
|
|
if os.path.exists("zz.py"):
|
|
os.remove("zz.py")
|
|
```
|
|
|
|
##### Supprimer un dossier:
|
|
|
|
```python
|
|
import os
|
|
if os.path.exists("empty_folder"):
|
|
os.rmdir("empty_folder")
|
|
```
|
|
|
|
|
|
|
|
#### Chemins
|
|
|
|
##### Méthodes:
|
|
|
|
```
|
|
>>> help(os.path)
|
|
|
|
abspath(path) → Retourne un chemin absolu
|
|
basename(p) → Retourne le dernier élément d'un chemin
|
|
commonprefix(list) → Retourne le chemin commun le plus long d'une liste de chemins
|
|
dirname(p) → Retourne le dossier parent de l'élément
|
|
exists(path) → Test si un chemin existe
|
|
getaTime(filename) → Retourne la date du dernier accès au fichier [os.stat()]
|
|
getctime(filename) → Retourne la date du dernier changement de metadonnées du fichier
|
|
getmTime(filename) → Retourne la date de la dernière modification du fichier
|
|
getsize(filename) → Retourne la tailkle d'un fichier (en octets)
|
|
isabs(s) → Test si un chemin est absolu
|
|
isdir(s) → Test si le chemin est un dossier
|
|
isfile(path) → Test si le chemin est un fichier régulier
|
|
islink(path) → Test si le chemin est un lien symbolique
|
|
ismount(path) → Test si le chemin est un point de montage
|
|
join(path, s) → Ajoute un élément au chemin passé en paramètre
|
|
normcase(s) → Normalise la casse d'un chemin
|
|
normpath(path) → Normalise le chemin, élimine les doubles barres obliques, etc.
|
|
realpath(filename) → Retourne le chemin canonique du nom de fichier spécifié (élimine les liens symboliques)
|
|
samefile(f1, f2) → Test si deux chemins font référence au même fichier réel
|
|
sameopenfile(f1, f2) → Test si deux objets de fichiers ouverts font référence au même fichier
|
|
split(p) → Fractionne un chemin d'accès. Retourne un tuple
|
|
```
|
|
|
|
##### Exemples:
|
|
|
|
```python
|
|
>>> import os.path
|
|
>>> help(os.path)
|
|
|
|
>>> path = "/Users/bruno/PycharmProjects/webserver/index.py"
|
|
|
|
>>> os.path.dirname(path)
|
|
'/Users/bruno/PycharmProjects/webserver'
|
|
>>> os.path.basename(path)
|
|
'index.py'
|
|
>>> os.path.split(path)
|
|
('/Users/bruno/PycharmProjects/webserver', 'index.py')
|
|
>>> os.path.abspath(".")
|
|
'/Users/bruno'
|
|
```
|
|
|
|
```python
|
|
>>> os.listdir(os.path.dirname(path))
|
|
['functions.py', 'server.py', 'index.py', 'serve.py', '__pycache__', 'test.py', 'open.py', '.idea']
|
|
```
|
|
|
|
```python
|
|
# lister récursivement tous les fichiers
|
|
|
|
>>> import os
|
|
>>> folder = '/Users/bruno/PycharmProjects'
|
|
>>> for path, dirs, files in os.walk(folder):
|
|
... for filename in files:
|
|
... print(filename)
|
|
...
|
|
.DS_Store
|
|
pyvenv.cfg
|
|
pip3.7
|
|
python3
|
|
easy_install
|
|
python
|
|
.../...
|
|
```
|
|
|
|
##### Connaître le répertoire courante:
|
|
|
|
```python
|
|
>>> import os
|
|
>>> os.getcwd()
|
|
'/Users/bruno/PycharmProjects/webserver'
|
|
```
|
|
|
|
|
|
|
|
##### Rechercher des éléments par motif
|
|
|
|
```
|
|
* → n'importe quel séquence de caractères
|
|
? → n'importe quel caractère
|
|
[] → n'importe quel caractère listé entre les crochets
|
|
```
|
|
|
|
```python
|
|
>>> import glob
|
|
|
|
# Methodes:
|
|
glob.glob(motif) → Liste les dossiers et les fichiers correspondants au motif
|
|
glob.iglob(motif) → Idem que glob mais retourne un itérateur
|
|
|
|
# Recherche des fichiers python:
|
|
>>> glob.glob("/Users/bruno/PycharmProjects/webserver/*.py")
|
|
['/Users/bruno/PycharmProjects/webserver/functions.py', '/Users/bruno/PycharmProjects/webserver/server.py', '/Users/bruno/PycharmProjects/webserver/index.py', '/Users/bruno/PycharmProjects/webserver/serve.py', '/Users/bruno/PycharmProjects/webserver/test.py', '/Users/bruno/PycharmProjects/webserver/open.py']
|
|
```
|
|
|
|
|
|
|
|
##### Manipuler les éléments
|
|
|
|
```python
|
|
os.makedirs(path) → Créer récursivement tous les dossiers d'un path si ceux-ci n'existent pas
|
|
os.mkdir(path) → Créer le dernier dossier d'un path. Si un des dossiers n'existe pas une erreur est retournée
|
|
os.remove(path) → Supprime le fichier / dossier indiqué
|
|
os.rename(old, new) → Renomme le fichier / dossier indiqué
|
|
```
|
|
|
|
|
|
|