[Introduction à Python3 Day 21] Chapitre 10 Système (10.1 à 10.5)

10.1 fichier

10.1.1 Créé par open ()


>>> fout=open("oops.txt","wt")
>>> print("Oops,I created a file.",file=fout)
>>> fout.close()

10.1.2 Vérifier que le fichier existe par existe ()


>>> import os
>>> os.path.exists("oops.txt")
True
>>> os.path.exists("./oops.txt")
True
>>> os.path.exists("aaa.txt")
False
>>> os.path.exists(".")
True
>>> os.path.exists("..")
True

10.1.3 Vérification du type de fichier avec isfile ()


>>> name="oops.txt"
>>> os.path.isfile(name)
True
#S'il s'agit d'un répertoire isdir()utilisation.
#"."Représente le répertoire actuel
#".."Représente le répertoire parent
>>> os.path.isdir(name)
False
>>> os.path.isdir(".")
True
>>> os.path.isdir("..")
True
#isabs()Renvoie si l'argument est un chemin absolu.
>>> os.path.isabs(name)
False
>>> os.path.isabs("/big/fake/name")
True
>>> os.path.isabs("/big/fake/name/without/a/leading/slash")
True
>>> os.path.isabs("big/fake/name/without/a/leading/slash")
False

10.1.4 Copie par copie ()


>>> import shutil
>>> shutil.copy("oops.txt","ohono.txt")
'ohono.txt'

10.1.5 Renommer le fichier par rename ()


>>> import os
>>> os.rename("ohono.txt","ohwel.txt")

10.1.6 Créer des liens avec link () et symlink ()


#yikes.oups de txt.Créer un lien dur vers txt
>>> os.link("oops.txt","yikes.txt")
>>> os.path.isfile("yikes.txt")
True
jeepers.oups de txt.Créer un lien symbolique vers txt
>>> os.symlink("oops.txt","jeepers.txt")
>>> os.path.islink("jeepers.txt")
True

10.1.7 Changer les permissions avec chmod ()


#oops.Seule la lecture est autorisée dans txt.
>>> os.chmod("oops.txt",0o400)

>>> import stat
>>> os.chmod("oops.txt",stat.S_IRUSR)

10.1.8 Changement de propriétaire par chown ()


>>> uid=5
>>> gid=22
>>> os.chown("oops",uid,gid)

10.1.9 Obtenir le chemin avec abspath ()


#Étendez les noms relatifs aux noms absolus.
>>> os.path.abspath("oops.txt")
'/Users/practice/bin/oops.txt'

10.1.10 Obtenir le nom du chemin du lien symbolique avec realpath ()

#Obtenez le statut réel du fichier de lien.
>>> os.path.realpath("jeepers.txt")
'/Users/practice/bin/oops.txt'

10.1.11 Supprimer des fichiers avec Remove


>>> os.remove("oops.txt")
>>> os.path.exists("oops.txt")
False

Répertoire 10.2

10.2.1 Créé par mkdir ()

>>> os.mkdir("poems")
>>> os.path.exists("poems")
True

10.2.2 Supprimé par rmdir ()


>>> os.rmdir("poems")
>>> os.path.exists("poems")
False

10.2.3 Créer une liste de contenu avec listdir ()


>>> os.mkdir("poems")
>>> os.listdir("poems")
[]

#Créer un sous-répertoire
>>> os.mkdir("poems/mcintyre")
>>> os.listdir("poems")
['mcintyre']

>>> fout=open("poems/mcintyre/the_good_man","wt")
>>> fout.write("""Cheerful and happy was his mood,
... He to the poor was kind and good,
... And he oft times did find them food,
... Also suppleis of coal and wood,
... """)
137
>>> fout.close()
>>> os.listdir("poems/mcintyre")
['the_good_man']

10.2.4 Changer le répertoire courant avec chdir ()


>>> import os
>>> os.chdir("poems")
>>> os.listdir(".")
['mcintyre']

10.2.5 Créer une liste de fichiers qui correspondent au modèle avec glob ()


>>> import glob
>>> glob.glob("m*")
['mcintyre']
>>> glob.glob("??")
[]
>>> glob.glob("m??????e")
['mcintyre']
>>> glob.glob("[klm]*e")
['mcintyre']

10.3 Programmes et processus

--Lorsque vous exécutez un programme distinct, le système d'exploitation (OS) crée un ** processus **.


>>> import os
#Obtenez l'identifiant du processus.
>>> os.getpid()
40037
#Obtenez le répertoire actuel.
>>> os.getcwd()
'/Users/practice/bin/poems'
#Obtenez l'identifiant de l'utilisateur.
>>> os.getuid()
501
#Obtenez l'identifiant du groupe.
>>> os.getgid()
20

10.3.1 Création d'un processus avec sous-processus


>>> import subprocess
>>> ret=subprocess.getoutput("date")
>>> ret
'Mardi 28 janvier 2020 11:17:59 JST'
>>> ret=subprocess.getoutput("date -u")
>>> ret
'Mardi 28 janvier 2020 02:19:40 UTC'
>>> ret=subprocess.getoutput("date -u | wc")
>>> ret
'       1       5      48'

#Accepte une liste de commandes et d'arguments.
>>> ret=subprocess.check_output(["date","-u"])
>>> ret
b'2020\xe5\xb9\xb4 1\xe6\x9c\x8828\xe6\x97\xa5 \xe7\x81\xab\xe6\x9b\x9c\xe6\x97\xa5 02\xe6\x99\x8222\xe5\x88\x8605\xe7\xa7\x92 UTC\n'

#Un code d'état et une sortie taple sont renvoyés.
>>> ret=subprocess.getstatusoutput("date")
>>> ret
(0, 'Mardi 28 janvier 2020 11:26:35 JST')

#Appel pour recevoir uniquement l'état de fin()utilisation.
>>> ret=subprocess.call("date")
Mardi 28 janvier 2020 11:27:05 JST
>>> ret
0
>>> ret=subprocess.call("date -u",shell=True)
Mardi 28 janvier 2020 02:30:49 UTC
>>> ret=subprocess.call(["date", "-u"])
Mardi 28 janvier 2020 02:34:41 UTC

10.3.2 Création d'un processus avec multitraitement

--Utilisez le module multitraitement pour exécuter les fonctions Python en tant que processus séparés. Vous pouvez même exécuter plusieurs processus indépendants dans un seul programme.

mp.py



import multiprocessing
import os

def do_this(what):
	whoami(what)

def whoami(what):
	print("Process %s says: %s" % (os.getpid(), what))

#Process()La fonction démarre un nouveau processus et exécute celui spécifié par target en affectant l'argument spécifié par args.
#Lorsque vous faites un argument avec args, si vous ne mettez pas de virgule à la fin, il sera reconnu comme une chaîne de caractères et le résultat sera étrange.
if __name__ == "__main__":
	whoami("I'm the main program")
	for n in range(4):
		p = multiprocessing.Process(target=do_this, args=("I'm function %s" % n,))
		p.start()

Résultat d'exécution



python mp.py
Process 40422 says: I'm the main program
Process 40438 says: I'm function 0
Process 40439 says: I'm function 1
Process 40440 says: I'm function 2
Process 40441 says: I'm function 3

10.3.3 Forcer l'arrêt du processus par terminate ()

termina.py



import multiprocessing
import time
import os

def whoami(name):
	print("I'm %s, in process %s" % (name, os.getpid()))

def loopy(name):
	whoami(name)
	start = 1
	stop = 1000000
	for num in range(start, stop):
		print("\tNumber %s of %s. Honk!" % (num, stop))
		time.sleep(1)

if __name__ == '__main__':
	whoami("main")
	p = multiprocessing.Process(target=loopy, args=("loopy" ,))
	p.start()
	time.sleep(5)
	p.terminate()

Résultat d'exécution



python termina.py
I'm main, in process 40518
I'm loopy, in process 40534
	Number 1 of 1000000. Honk!
	Number 2 of 1000000. Honk!
	Number 3 of 1000000. Honk!
	Number 4 of 1000000. Honk!
	Number 5 of 1000000. Honk!

10.4 Calendrier et horloge


#Testez si c'est une année humide.
>>> import calendar
>>> calendar.isleap(1900)
False
>>> calendar.isleap(1996)
True
>>> calendar.isleap(1999)
False
>>> calendar.isleap(2000)
True
>>> calendar.isleap(2002)
False
>>> calendar.isleap(2004)
True

10.4.1 module datetime


>>> from datetime import date
>>> halloween=date(2014,10,31)
>>> halloween
datetime.date(2014, 10, 31)

#Il peut être récupéré en tant qu'attribut.
>>> halloween.day
31
>>> halloween.month
10
>>> halloween.year
2014
#Le contenu de la date est isformat()Peut être affiché avec.
>>> halloween.isoformat()
'2014-10-31'

#today()Générez la date du jour en utilisant la méthode.
>>> from datetime import date
>>> now=date.today()
>>> now
datetime.date(2020, 1, 28)

>>> from datetime import timedelta
>>> one_day=timedelta(days=1)
>>> tomorrow=now + one_day
>>> tomorrow
datetime.date(2020, 1, 29)
>>> now + 17*one_day
datetime.date(2020, 2, 14)
>>> yesterday=now-one_day
>>> yesterday
datetime.date(2020, 1, 27)

#Utilisez l'objet time du module datetime pour représenter l'heure du jour.
>>> from datetime import time
>>> noon=time(12,0,0)
>>> noon
datetime.time(12, 0)
>>> noon.hour
12
>>> noon.minute
0
>>> noon.second
0
>>> noon.microsecond
0

#L'objet datetime est également isoformat()Ayez une méthode.
>>> from datetime import datetime
>>> some_day=datetime(2014,1,2,3,4,5,6)
>>> some_day
datetime.datetime(2014, 1, 2, 3, 4, 5, 6)
>>> some_day.isoformat()
'2014-01-02T03:04:05.000006'

#datetime obtient la date et l'heure actuelles maintenant()Ayez une méthode.
>>> from datetime import datetime
>>> x=datetime.now()
>>> x
datetime.datetime(2020, 1, 28, 13, 59, 8, 731311)
>>> x.year
2020
>>> x.day
28
>>> x.hour
13
>>> x.minute
59
>>> x.second
8
>>> x.microsecond
731311

#Vous pouvez combiner des objets de date et d'heure avec combiner.
>>> from datetime import datetime,time,date
>>> noon=time(12)
>>> this_day=date.today()
>>> noon_today=datetime.combine(this_day,noon)
>>> noon_today
datetime.datetime(2020, 1, 28, 12, 0)
>>> noon_today.date()
datetime.date(2020, 1, 28)
>>> noon_today.time()
datetime.time(12, 0)

10.4.2 Comment utiliser le module horaire

--Il existe un module de temps en plus de l'objet de temps du module datetime. → La fonction time () du module time renvoie l'heure Unix.


>>> import time
>>> now=time.time()
>>> now
1580188038.071847

#ctime()Vous pouvez utiliser pour convertir l'heure Unix en une chaîne.
>>> time.ctime(now)
'Tue Jan 28 14:07:18 2020'

#localtime()Renvoie la date et l'heure en heure standard sur le système.
>>> time.localtime(now)
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=28, tm_hour=14, tm_min=7, tm_sec=18, tm_wday=1, tm_yday=28, tm_isdst=0)

#gmttime()Renvoie l'heure en UTC.
>>> time.gmtime(now)
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=28, tm_hour=5, tm_min=7, tm_sec=18, tm_wday=1, tm_yday=28, tm_isdst=0)

#mktime()Est une structure_time Convertit un objet en heure Unix.
>>> tm=time.localtime(now)
>>> time.mktime(tm)
1580188038.0

10.4.3 Lire et écrire la date et l'heure


#ctime()Convertit l'heure Unix en chaîne.
>>> import time
>>> now=time.time()
>>> time.ctime(now)
'Tue Jan 28 14:15:57 2020'

>>> import time
#strftime()Utilisez le spécificateur de format de.
>>> fmt="""It is %A,%B,%d,%Y, local time %I:%M:%S%p"""
>>> t=time.localtime()
>>> t
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=28, tm_hour=14, tm_min=21, tm_sec=10, tm_wday=1, tm_yday=28, tm_isdst=0)
#struct_Convertissez l'heure en chaîne.
>>> time.strftime(fmt,t)
'It is Tuesday,January,28,2020, local time 02:21:10PM'


>>> from datetime import date
>>> some_day=date(2014,7,4)
#Lorsqu'elle est utilisée dans un objet date, seule la date est formatée.
>>> some_day.strftime(fmt)
'It is Friday,July,04,2014, local time 12:00:00AM'

>>> from datetime import time
>>> some_time=time(10,45)
#Lorsqu'il est utilisé dans l'objet de temps, seule l'heure est formatée.
>>> some_time.strftime(fmt)
'It is Monday,January,01,1900, local time 10:45:00AM'

#Inversement, strptime pour convertir une chaîne de caractères en informations de date et d'heure()utilisation.
#Les parties autres que le format enfant doivent correspondre exactement.
>>> import time
>>> fmt="%Y-%m-%d"
>>> time.strptime("2012-01-29",fmt)
time.struct_time(tm_year=2012, tm_mon=1, tm_mday=29, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=29, tm_isdst=-1)

#setlocale()Renvoie la date dans les paramètres régionaux spécifiés.
>>> import locale
>>> from datetime import date
>>> halloween=date(2014,10,31)
>>> for lang_country in ["en_us","fr_fr","de_de","es_es","is_is",]:
...     locale.setlocale(locale.LC_TIME,lang_country)
...     halloween.strftime("%A, %B, %d")
... 
'en_us'
'Friday, October, 31'
'fr_fr'
'Vendredi, octobre, 31'
'de_de'
'Freitag, Oktober, 31'
'es_es'
'viernes, octubre, 31'
'is_is'
'föstudagur, október, 31'

>>> import locale
>>> names=locale.locale_alias.keys()
>>> good_names=[name for name in names if
... len(name)==5 and name[2]=="_"
... 
... 
... ]
>>> good_names[5]
'ak_gh'
>>> good_names=[name for name in names if
... len(name)==5 and name[2]=="_"]
>>> good_names[5]
'ak_gh'
>>> good_names[:5]
['a3_az', 'aa_dj', 'aa_er', 'aa_et', 'af_za']
>>> de=[name for name in good_names if name.startswith("de")]
>>> de
['de_at', 'de_be', 'de_ch', 'de_de', 'de_it', 'de_lu']

10.5 Question de révision

10-1 Ecrivez la date actuelle sous forme de chaîne dans un fichier texte appelé today.txt.


>>> from datetime import date
>>> with open("today.txt","wt") as fout:
...     now=date.today()
...     now_str=now.isoformat()
...     print(now_str,file=fout)

10-2 Lisons le contenu du fichier texte today.txt dans une variable chaîne appelée today_string.


>>> with open("today.txt","rt") as input:
...     today_string=input.read()
... 
>>> today_string
'2020-01-28\n'

10-3 Analysons et récupérons la date à partir de today_string.


>>> import time
>>> fmt="%Y-%m-%d\n"
#Chaîne de caractères ⇨ strptime pour les informations de date()utilisation.
>>> time.strptime(today_string,fmt)
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=28, tm_isdst=-1)

10-4 Faites une liste de fichiers dans le répertoire courant.

>> import os
>>> os.listdir(".")
[`flask2.py`, `pip3.7`, `jeepers.txt`, `villains`, `activate.ps1`, `index.html`, `.DS_Store`, `python3`, `settings.cfg`, `relativity`, `yikes.txt`, `easy_install`, `python`, `pip3`, `ohwel.txt`, `today.txt`, `activate.fish`, `easy_install-3.7`, `bottle3.py`, `zoo.py`, `flask9-2.py`, `test1.py`, `weather.py`, `bottle2.py`, `wheel`, `enterprise.db`, `flask9-3.py`, `links.py`, `__pycache__`, `flask3a.py`, `python3.7`, `test2.py`, `bottle1.py`, `python-config`, `activate_this.py`, `pip`, `bottle_test.py`, `definitions.db`, `flask3b.py`, `menu.xml`, `books.csv`, `mp.py`, `activate.xsh`, `weatherman.py`, `lelatibity`, `termina.py`, `bfile`, `flask3c.py`, `relatibity`, `flask9-5.py`, `sources`, `text.txt`, `templates`, `activate`, `poems`, `books.db`, `flask1.py`, `mcintyre.yaml`, `report.py`, `zoo.db`, `activate.csh`]

10-5 Faites une liste de fichiers dans le répertoire parent.


>>> import os
>>> os.listdir("..")
['.DS_Store', '61.py', 'bin', 'python', 'include', 'lib']


10-6 Créons 3 processus distincts en utilisant le multitraitement. Laissez chacun dormir pendant un nombre aléatoire de secondes de 1 à 5 secondes.

multi_times.py



import multiprocessing
import os

def now(seconds):
    from datetime import datetime
    from time import sleep
    sleep(seconds)
    print("wait", seconds, "second, time is ", datetime.utcnow())

if __name__== "__main__":
    import random
    for n in range(3):
        seconds=random.random()
        proc=multiprocessing.Process(target=now, args=(seconds,))
        proc.start()

Résultat d'exécution



python3 multi_times.py
wait 0.31146317121366796 second, time is  2020-01-28 06:30:39.446188
wait 0.5162984978514253 second, time is  2020-01-28 06:30:39.650398
wait 0.8005158157521853 second, time is  2020-01-28 06:30:39.934936

10-7 Créons un objet de date d'anniversaire.


>>> from datetime import date
>>> birthday=date(1994, 1, 1)
>>> birthday
datetime.date(1994, 1, 1)


10-8 Quel jour était votre anniversaire?

>>> import time
>>> from datetime import date
>>> birthday=date(1994, 1, 1)
>>> fmt="%Y-%m-%d-%A"
>>> date.strftime(birthday,fmt)
'1994-01-01-Saturday'


10-9 Quand est-ce que 10 000 jours se sont écoulés depuis ma naissance?


>>> from datetime import timedelta
>>> day=timedelta(days=10000)
>>> A=birthday+day
>>> A
datetime.date(2021, 5, 19)


Impressions

Je l'ai revu rapidement. Je veux voir des tutoriels lors de son utilisation.

Les références

"Introduction à Python3 par Bill Lubanovic (publié par O'Reilly Japon)"

Recommended Posts

[Introduction à Python3 Day 21] Chapitre 10 Système (10.1 à 10.5)
[Introduction à Python3 Jour 13] Chapitre 7 Chaînes de caractères (7.1-7.1.1.1)
[Introduction à Python3 Jour 14] Chapitre 7 Chaînes de caractères (7.1.1.1 à 7.1.1.4)
[Introduction à Python3 Jour 15] Chapitre 7 Chaînes de caractères (7.1.2-7.1.2.2)
[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.1-8.2.5)
[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.3-8.3.6.1)
[Introduction à Python3 Jour 19] Chapitre 8 Destinations de données (8.4-8.5)
[Introduction à Python3 Day 18] Chapitre 8 Destinations de données (8.3.6.2 à 8.3.6.3)
[Introduction à Python3 Jour 12] Chapitre 6 Objets et classes (6.3-6.15)
[Introduction à Python3, jour 22] Chapitre 11 Traitement parallèle et mise en réseau (11.1 à 11.3)
[Introduction à Python3 Jour 11] Chapitre 6 Objets et classes (6.1-6.2)
[Introduction à Python3, Jour 23] Chapitre 12 Devenir un Paisonista (12.1 à 12.6)
[Introduction à Python3 Jour 20] Chapitre 9 Démêler le Web (9.1-9.4)
[Introduction à Python3 Jour 1] Programmation et Python
[Introduction à Python3 Jour 3] Chapitre 2 Composants Py: valeurs numériques, chaînes de caractères, variables (2.2 à 2.3.6)
[Introduction à Python3 Jour 2] Chapitre 2 Composants Py: valeurs numériques, chaînes de caractères, variables (2.1)
Introduction à la vérification de l'efficacité Chapitre 1 écrit en Python
Introduction au langage Python
Introduction à OpenCV (python) - (2)
[Introduction à Python3 Jour 7] Chapitre 3 Outils Py: Listes, Taples, Dictionnaires, Ensembles (3.3-3.8)
[Introduction à Python3 Jour 5] Chapitre 3 Outils Py: listes, taples, dictionnaires, ensembles (3.1-3.2.6)
[Introduction à Python3 Jour 10] Chapitre 5 Boîte cosmétique de Py: modules, packages, programmes (5.4-5.7)
[Introduction à Python3 Jour 9] Chapitre 5 Boîte cosmétique de Py: modules, packages, programmes (5.1-5.4)
[Introduction à Python3 Jour 6] Chapitre 3 Liste des outils Py, tapple, dictionnaire, set (3.2.7-3.2.19)
Introduction à la vérification de l'efficacité Chapitre 3 écrit en Python
Introduction à la vérification de l'efficacité Chapitre 2 écrit en Python
Introduction à Python Django (2) Win
Introduction à la communication série [Python]
[Introduction à Python] <liste> [modifier le 22/02/2020]
Introduction à Python (version Python APG4b)
Une introduction à la programmation Python
Introduction à Python pour, pendant
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
[Livre technique] Introduction à l'analyse de données avec Python -1 Chapitre Introduction-
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
[Présentation de l'application Udemy Python3 +] 31. Commentaire
Introduction à la bibliothèque de calcul numérique Python NumPy
[Introduction à Python] <numpy ndarray> [modifier le 22/02/2020]
[Présentation de l'application Udemy Python3 +] 57. Décorateur
Introduction à Python Hands On Partie 1
[Présentation de l'application Udemy Python3 +] 56. Clôture
Introduction à Protobuf-c (langage C ⇔ Python)
[Introduction à Python] Utilisons les pandas
[Introduction à Python] Utilisons les pandas
[Introduction à l'application Udemy Python3 +] Résumé
Python Jour 1
Introduction à l'analyse d'image opencv python
[Introduction à Python] Utilisons les pandas
Premiers pas avec Python pour les non-ingénieurs
[AWS SAM] Présentation de la version Python
[Tutoriel Python] Une introduction facile à Python
Système de notation IPynb réalisé avec TA d'introduction à la programmation (Python)
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 10 Introduction à Cupy
J'ai lu "Renforcer l'apprentissage avec Python de l'introduction à la pratique" Chapitre 1
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 9 Introduction à scikit-learn
J'ai lu "Renforcer l'apprentissage avec Python de l'introduction à la pratique" Chapitre 2
[Introduction à Udemy Python3 + Application] 18. Méthode List