Fonctions qui interagissent avec le système d'exploitation
import os
os.getcwd() #Obtenir le répertoire actuel
os.system('mkdir today') #Exécution de la commande dans le shell du système
Le module shutil
est utile pour gérer les fichiers et répertoires
import shutil
shutil.copyfile('data.db', 'archive.db')
shuti.move('/build/executables', 'installdir')
Le module glob recherche dans le répertoire des caractères génériques et renvoie une liste de fichiers
import glob
glob.glob('*.py')
#.Une liste de fichiers se terminant par py est renvoyée
Les arguments passés lors de l'exécution de la commande de python sont stockés dans sys.argv
import sys
print(sys.argv)
#Obtenir la liste des arguments
#Le 0ème élément est le nom du fichier
Les autres modules qui gèrent les arguments incluent:
Utilisez le module sys
stdin, stdout, stderr
stderr
est utile pour afficher des messages même lorsque stdout
est redirigé
Les expressions régulières, etc. peuvent être implémentées en utilisant le module re
import re
print(re.findall(r'\bf[a-z]*', 'whitch foot or hand fell fastest'))
# ['foot', 'fell', 'fastest']
print(re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat'))
# cat in the hat
module mathématique
import math
math.cos(math.pi / 4)
# 0.7071067811865476
math.log(1024, 2)
# 10.0
module aléatoire
import random
random.choice(['apple', 'pear', 'banana'])
#Choix aléatoire dans la liste
# 'apple'
random.sample(range(100), 10)
# range(100)Extrait 10 de(Pas de duplication)
# [48, 5, 42, 15, 23, 78, 55, 72, 39, 1]
random.random()
#Nombre à virgule flottante aléatoire
# 0.2785335302723758
random.randrange(6)
# range(6)Entier sélectionné au hasard parmi
# 0
module de statistiques - trouver des statistiques
import statistics
data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5]
statistics.mean(data) #moyenne
# 1.6071428571428572
statistics.median(data) #Médian
# 1.25
statistics.variance(data) #Distribué
# 1.3720238095238095
Voir le projet SciPy pour d'autres modules numériques
https://www.scipy.org/
from urllib.request import urlopen
with urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl') as response:
for line in response:
line = line.decode('utf-8') #Décoder les données binaires en texte
if 'EST' in line or 'EDT' in line: #Trouver l'heure normale de l'Est
print(line)
import smtplib
server = smtplib.SMTP('localhost')
server.sendmail('[email protected]', '[email protected]',
"""To: [email protected]
From: [email protected]
Beware the Ideas of March.
"""
)
server.quit()
from datetime import date
now = date.today()
print(now)
# 2019-12-09
print(now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B."))
# 12-09-19. 09 Dec 2019 is a Monday on the 09 day of December.
birthday = date(1964, 7, 31)
age = now - birthday
print(age.days)
# 20219
Mesurons la différence de performance lors de l'échange de variables
from timeit import Timer
time1 = Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()
time2 = Timer('a,b = b,a', 'a=1; b=2').timeit()
print(time1)
# 0.020502762
print(time2)
# 0.018866841999999995
Les modules "profile" et "pstats" conviennent également pour mesurer de grands blocs de code.
Écrivez le test lorsque vous écrivez la fonction et exécutez le test pendant le développement
Le module doctest
scanne le module et valide les tests embarqués dans la docstring.
Le test répertorie les appels courants et leurs résultats dans docstring
def average(values):
"""Calculer la moyenne arithmétique à partir d'une liste de nombres
>>> print(average([20, 30, 70]))
40.0
"""
return sum(values) / len(values)
import doctest
doctest.testmod()
#Valider automatiquement les tests embarqués
Le module ʻunittest` peut avoir un ensemble de tests plus complet dans un fichier séparé
import unittest
from doctest_sample import average
class TestStatisticalFunctions(unittest.TestCase):
def test_average(self):
self.assertEqual(average([20, 30, 70]), 40.0)
self.assertEqual(round(average([1, 5, 7]), 1), 4.3)
with self.assertRaises(ZeroDivisionError):
average([])
with self.assertRaises(TypeError):
average(20, 30, 70)
unittest.main()