python créer - Comment supprimer un fichier ou un dossier?





effacer contenu (9)


Utilisation

shutil.rmtree(path[, ignore_errors[, onerror]])

(voir doc complet sur shutil ) et / ou

os.remove

et

os.rmdir

(Doc complet sur os.remove() )

Comment supprimer un fichier ou un dossier en Python?




import os

folder = '/Path/to/yourDir/'
fileList = os.listdir(folder)

for f in fileList:
    filePath = folder + '/'+f

    if os.path.isfile(filePath):
        os.remove(filePath)

    elif os.path.isdir(filePath):
        newFileList = os.listdir(filePath)
        for f1 in newFileList:
            insideFilePath = filePath + '/' + f1

            if os.path.isfile(insideFilePath):
                os.remove(insideFilePath)



Créer une fonction pour vous les gars.

def remove(path):
    """ param <path> could either be relative or absolute. """
    if os.path.isfile(path):
        os.remove(path)  # remove the file
    elif os.path.isdir(path):
        shutil.rmtree(path)  # remove dir and all contains
    else:
        raise ValueError("file {} is not a file or dir.".format(path))



Syntaxe Python pour supprimer un fichier

import os
os.remove("/tmp/<file_name>.txt")

OU

import os
os.unlink("/tmp/<file_name>.txt")

Meilleur entrainement:
1. Vérifiez d'abord si le fichier ou le dossier se ferme ou non puis supprimez seulement ce fichier. Cela peut être réalisé de deux façons:
une. os.path.isfile("/path/to/file")
b. Utilisez la exception handling.

EXEMPLE pour os.path.isfile

#!/usr/bin/python
import os
myfile="/tmp/foo.txt"

## if file exists, delete it ##
if os.path.isfile(myfile):
    os.remove(myfile)
else:    ## Show an error ##
    print("Error: %s file not found" % myfile)

Gestion des exceptions

#!/usr/bin/python
import os

## get input ##
myfile= raw_input("Enter file name to delete : ")

## try to delete file ##
try:
    os.remove(myfile)
except OSError, e:  ## if failed, report it back to the user ##
    print ("Error: %s - %s." % (e.filename,e.strerror))

SORTIE RESPECTIVE

Enter file name to delete : demo.txt
Error: demo.txt - No such file or directory.

Enter file name to delete : rrr.txt
Error: rrr.txt - Operation not permitted.

Enter file name to delete : foo.txt 

Syntaxe Python pour supprimer un dossier

shutil.rmtree()

Exemple pour shutil.rmtree()

#!/usr/bin/python
import os
import sys
import shutil

# Get dir name
mydir= raw_input("Enter directory name : ")

## Try to remove tree; if failed show an error using try...except on screen
try:
    shutil.rmtree(mydir)
except OSError, e:
    print ("Error: %s - %s." % (e.filename,e.strerror))






Comment supprimer un fichier ou un dossier en Python?

Pour Python 3, pour supprimer individuellement le fichier et le répertoire, utilisez respectivement les méthodes pathlib.Path.unlink et pathlib.Path.rmdir Path :

from pathlib import Path
dir_path = Path.home() / 'directory' 
file_path = dir_path / 'file'

file_path.unlink() # remove file

dir_path.rmdir()   # remove directory

Notez que vous pouvez également utiliser des chemins relatifs avec des objets Path , et vous pouvez vérifier votre répertoire de travail actuel avec Path.cwd .

Pour supprimer des fichiers et des répertoires individuels dans Python 2, reportez-vous à la section ci-dessous.

Pour supprimer un répertoire avec le contenu, utilisez shutil.rmtree , et notez que ceci est disponible dans Python 2 et 3:

from shutil import rmtree

rmtree(dir_path)

Manifestation

Nouveau dans Python 3.4 est l'objet Path .

Utilisons-en un pour créer un répertoire et un fichier pour démontrer l'utilisation. Notez que nous utilisons le / pour joindre les parties du chemin, cela contourne les problèmes entre les systèmes d'exploitation et les problèmes d'utilisation des barres obliques inverses sous Windows (où vous devez doubler vos barres obliques inversées comme \\ ou utiliser des chaînes brutes, comme r"foo\bar" ):

from pathlib import Path

# .home() is new in 3.5, otherwise use os.path.expanduser('~')
directory_path = Path.home() / 'directory'
directory_path.mkdir()

file_path = directory_path / 'file'
file_path.touch()

et maintenant:

>>> file_path.is_file()
True

Maintenant, supprimons-les. D'abord le fichier:

>>> file_path.unlink()     # remove file
>>> file_path.is_file()
False
>>> file_path.exists()
False

Nous pouvons utiliser la globbing pour supprimer plusieurs fichiers - d'abord créons quelques fichiers pour cela:

>>> (directory_path / 'foo.my').touch()
>>> (directory_path / 'bar.my').touch()

Ensuite, il suffit de parcourir le modèle glob:

>>> for each_file_path in directory_path.glob('*.my'):
...     print(f'removing {each_file_path}')
...     each_file_path.unlink()
... 
removing ~/directory/foo.my
removing ~/directory/bar.my

Maintenant, en démontrant la suppression du répertoire:

>>> directory_path.rmdir() # remove directory
>>> directory_path.is_dir()
False
>>> directory_path.exists()
False

Que faire si nous voulons supprimer un répertoire et tout ce qu'il contient? Pour ce cas d'utilisation, utilisez shutil.rmtree

Recréons notre répertoire et fichier:

file_path.parent.mkdir()
file_path.touch()

et notez que rmdir échoue à moins qu'il ne soit vide, ce qui explique pourquoi rmtree est si pratique:

>>> directory_path.rmdir()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/anaconda3/lib/python3.6/pathlib.py", line 1270, in rmdir
    self._accessor.rmdir(self)
  File "~/anaconda3/lib/python3.6/pathlib.py", line 387, in wrapped
    return strfunc(str(pathobj), *args)
OSError: [Errno 39] Directory not empty: '/home/excelsiora/directory'

Maintenant, importez rmtree et passez le répertoire à la fonction:

from shutil import rmtree
rmtree(directory_path)      # remove everything 

et nous pouvons voir que tout a été enlevé:

>>> directory_path.exists()
False

Python 2

Si vous êtes sur Python 2, il y a un pathlib2 , qui peut être installé avec pip:

$ pip install pathlib2

Et puis vous pouvez alias la bibliothèque à pathlib

import pathlib2 as pathlib

Ou simplement importer directement l'objet Path (comme démontré ici):

from pathlib2 import Path

Si c'est trop, vous pouvez supprimer des fichiers avec os.remove ou os.unlink

from os import unlink, remove
from os.path import join, expanduser

remove(join(expanduser('~'), 'directory/file'))

ou

unlink(join(expanduser('~'), 'directory/file'))

et vous pouvez supprimer des répertoires avec os.rmdir :

from os import rmdir

rmdir(join(expanduser('~'), 'directory'))

Notez qu'il existe aussi un os.removedirs - il supprime uniquement les répertoires vides de manière récursive, mais cela peut convenir à votre cas d'utilisation.




shutil.rmtree est la fonction asynchrone, donc si vous voulez vérifier quand elle est terminée, vous pouvez utiliser while ... loop

import os
import shutil

shutil.rmtree(path)

while os.path.exists(path):
  pass

print('done')



Vous pouvez utiliser le module pathlib intégré (nécessite Python 3.4+, mais il existe des backports pour les anciennes versions sur PyPI: pathlib , pathlib2 ).

Pour supprimer un fichier, il existe la méthode unlink :

import pathlib
path = pathlib.Path(name_of_file)
path.unlink()

Ou la méthode rmdir pour supprimer un dossier vide :

import pathlib
path = pathlib.Path(name_of_folder)
path.rmdir()



Une solution plus générique:

  1. Éditez le fichier .gitignore .

    ECHO mylogfile.log >> .gitignore

  2. Supprimer tous les éléments de l'index.

    git rm -r -f --cached .

  3. Reconstruire l'index.

    git add .

  4. Faire un nouveau commit

    git commit -m "Removed mylogfile.log"





python file-io folder delete-file