Suppression de fichier à l'aide de la commande rm
Je veux m'assurer que j'ai supprimer les fichiers requis.
J'ai le code quelque chose comme
dir="/some/path/"
file = "somefile.txt"
cmd_rm= "rm -rf "+dir + file
os.system(cmd_rm)
La dir
et file
les valeurs sont récupérées à partir d'une base de données. Comment puis-je m'assurer que je n'ai jamais finir rm -rf /
?
Que dois-je vérifier avant de faire rm -rf
?
source d'informationauteur webminal.org
Vous devez vous connecter pour publier un commentaire.
Vous pouvez envisager d'utiliser
os.remove()
plutôt car il est beaucoup moins dangereux que ce que vous tentez.Tout d'abord, je vous suggère d'utiliser le
os.remove()
etos.rmdir()
fonctions pour travailler avec des choses comme ça. Vous allez vous retrouver avec plus d'un code portable et moins de maux de tête pour la vérification de la commande de retour.De vérifier ce que vous êtes effectivement en essayant de supprimer (vous ne voulez pas de simplement vérifier "/"), vous pouvez utiliser des expressions régulières sur le chemin ou tout simplement ajouter un chemin d'accès de base à tous les chemin retourné à partir de votre base de données (en fonction de ce que vous faites ...).
Il y a un module appelé
shutil
qui offre coque-comme la manipulation de fichiers. Si vous souhaitez supprimer un répertoire et tous les fichiers et répertoires d'elle, puis utilisershutil.rmtree
.Cependant il est implémenté en python donc si vous êtes à la suppression d'un grand nombre de fichiers, puis de frai rm peut être plus rapide, mais échouera si le chemin contient des espaces.
Utilisation
shutil.rmtree
comme Dave Kirby dit. Si vous souhaitez supprimer le juste le fichier utilisation:Si vous souhaitez supprimer l'utilisation de l'annuaire:
Si les fichiers sont protégés en écriture, assurez-vous que vous disposez des autorisations d'écriture avant de l'exécuter.
En supposant que votre évocation rm-rf n'est pas seulement au hasard, mais elle est exactement de la commande dont vous avez besoin, pourquoi ne pas l'appeler? Il y a une lib permettant une plus grande intégration avec shell appelé sh.
PS assurez-vous que vous n'êtes pas root et/ou en demander la saisie de l'utilisateur à redoubler de prudence.
Et, oui, la fumée de l'homme afin d'éviter la suppression d'un seul fichier de manière récursive 😉