>>> import os
>>> import shutil
>>> import glob
>>> import subprocess
Ici mon répertoire courant est '/home/pi'
>>> os.getcwd()
'/home/pi'
Le répertoire courant est "/home/pi" , on va le changer pour se placer dans un sous répertoire : "/home/pi/Py3".
On utilise ici l'adresse relative de "Py3".
>>> os.chdir("Py3")
>>> os.getcwd()
'/home/pi/Py3'
On retourne au répertoire "/home/pi" .
On utilise ici l'adresse relative du dossier parent : un point "." fait référence au répertoire courant, tandis que deux points ".." font référence au dossier parent.
>>> os.chdir('..')
>>> os.getcwd()
'/home/pi'
On retourne encore à "Py3" mais cette fois par son adresse absolue:
>>> os.chdir("/home/pi/Py3")
>>> os.getcwd()
'/home/pi/Py3'
Et on revient encore au dossier parent, mais par son adresse absolue:
>>> os.chdir("/home/pi")
>>> os.getcwd()
'/home/pi'
Le "." est l'adresse relative du répertoire courant
>>> os.listdir(".")
['.themes', '.xsession-errors', '.local', 'Py2', '.claws-mail', '.Xauthority', '.pip', 'Py3', '.gtkrc-2.0', 'Videos', 'Desktop', 'Music', '.dbus', '.cache', '.bash_history', 'Public', '.lesshst', 'Templates', '.WolframEngine', '.Wolfram Research', '.gconf', '.profile', '.python_history', '.icons', '.asoundrc', 'html', '.bash_logout', '.config', 'Documents', '.oracle_jre_usage', 'Pictures', '.selected_editor', '.gstreamer-0.10', '.idlerc', '.bashrc', 'Downloads', '.xsession-errors.old', 'zic', '.thumbnails', '.vnc', '.gtk-bookmarks', 'oldconffiles']
"/home/pi" est l'adresse absolue du répertoire courant
>>> os.listdir("/home/pi")
['.themes', '.xsession-errors', '.local', 'Py2', '.claws-mail', '.Xauthority', '.pip', 'Py3', '.gtkrc-2.0', 'Videos', 'Desktop', 'Music', '.dbus', '.cache', '.bash_history', 'Public', '.lesshst', 'Templates', '.WolframEngine', '.Wolfram Research', '.gconf', '.profile', '.python_history', '.icons', '.asoundrc', 'html', '.bash_logout', '.config', 'Documents', '.oracle_jre_usage', 'Pictures', '.selected_editor', '.gstreamer-0.10', '.idlerc', '.bashrc', 'Downloads', '.xsession-errors.old', 'zic', '.thumbnails', '.vnc', '.gtk-bookmarks', 'oldconffiles']
"Py3" est un sous dossier de "/home/pi"
>>> os.listdir("Py3")
['Drop', 'Reseau', 'Genopy', 'Bio python']
>>>os.listdir("/home/pi/Py3")
['Drop', 'Reseau', 'Genopy', 'Bio python']
>>>import glob
>>>import os
>>>
>>>#on change de répertoire courant pour se placer dans le répertoire dont on souhaite obtenir la liste récursive des dossiers, sous dossiers et fichiers
>>>
>>> os.chdir("Py3/Genopy"')
>>>
>>> glob.glob("**", recursive=True)
['Convertisseur_metrique.py', 'Dropbox', 'Dropbox/test dropbox oauth.py', 'Dropbox/token_genopy.txt', 'Dropbox/token_syncropy.txt', 'conv_met.py', 'mail.py', 'mail2.py', 'md2html2pdf', 'md2html2pdf/coco.pdf', 'md2html2pdf/cork.pdf', 'md2html2pdf/create image.py', 'md2html2pdf/create.png', 'md2html2pdf/html to pdf.py', 'md2html2pdf/htmlcss.py', 'md2html2pdf/test.md']
import os
import fnmatch
def recur(path):
"""
path est une chaine de caractere
retourne une liste recursive des dossiers et fichiers contenus dans path.
c'est une alternative a glob.glob('**',recursive=True) qui ne fonctionne pas en python < 3.5
"""
r = []
for root, dir, files in os.walk(path):
if root != path:
r.append(root.replace(path+'/', ''))
for f in fnmatch.filter(files, "*"):
x = root+'/'+f
y = x.replace(path+'/','')
r.append(y)
return r
Résultat :
>>> recur("Py3/Genopy")
['Convertisseur_metrique.py', 'Dropbox', 'Dropbox/test dropbox oauth.py', 'Dropbox/token_genopy.txt', 'Dropbox/token_syncropy.txt', 'conv_met.py', 'mail.py', 'mail2.py', 'md2html2pdf', 'md2html2pdf/coco.pdf', 'md2html2pdf/cork.pdf', 'md2html2pdf/create image.py', 'md2html2pdf/create.png', 'md2html2pdf/html to pdf.py', 'md2html2pdf/htmlcss.py', 'md2html2pdf/test.md']
>>> info = os.stat('mail.py')
>>> info
os.stat_result(st_mode=33188, st_ino=15850793, st_dev=16777219, st_nlink=1, st_uid=501, st_gid=501, st_size=916, st_atime=1481117272, st_mtime=1481117272, st_ctime=1481117272)
>>> info.st_birthtime
1481117272.0
>>> info.st_atime
1481117272.0
>>> info.st_mtime
1481117272.0
>>> info.st_size
916
>>> os.path.isdir('mail.py')
False
>>> os.path.isfile('mail.py')
True
os.mkdir("mon_nouveau_dossier")
os.makedirs("dossier_parent/dossier_fils")
os.rmdir("mon_dossier_a_supprimer")
os.removedirs("dossP/dossF/dossPF")
shutil.rmtree("dossier_a_supprimer")
os.remove("mon_fichier_a_supprimer")
os.rename()
shutil.copy2("mon_fichier_a_copier","son_nouvel_emplacement")
shutil.move("mon_fichier_ou_dossier_a_deplacer","son_nouvel_emplacement")
>>> import subprocess
>>> subprocess.call(["mkdir", "mon_nouveau_dossier"])
0
>>> r = subprocess.getoutput("ls")
>>> r
'Desktop\nDocuments\nDownloads\nmodosglob\nmon_nouveau_dossier\nMusic\nPictures\nPublic\npython_games\nTemplates\nVideos'
r = subprocess.check_output(["ls","-l"])
>>> r
b'total 36\ndrwxr-xr-x 2 pi pi 4096 janv. 25 10:38 Desktop\ndrwxr-xr-x 5 pi pi 99 d\xe9c. 13 2016 Documents\ndrwxr-xr-x 2 pi pi 4096 sept. 15 09:17 Downloads\ndrwxr-xr-x 3 pi pi 4096 janv. 25 10:41 modosglob\ndrwxr-xr-x 2 pi pi 4096 janv. 25 10:43 mon_nouveau_dossier\ndrwxr-xr-x 2 pi pi 4096 sept. 15 09:17 Music\ndrwxr-xr-x 2 pi pi 4096 sept. 15 09:17 Pictures\ndrwxr-xr-x 2 pi pi 4096 sept. 15 09:17 Public\ndrwxr-xr-x 2 pi pi 1629 d\xe9c. 13 2016 python_games\ndrwxr-xr-x 2 pi pi 4096 sept. 15 09:17 Templates\ndrwxr-xr-x 2 pi pi 4096 sept. 15 09:17 Videos\n'
En python >= 3.5
r = subprocess.run(["ls","-l"])
Une précision
os.mkdir("dossier à créer") et
Path("dossier à créer").mkdir()
Tous deux produisent le même resultat.