OSError: le Répertoire n'est pas vide soulevées, comment réparer?
Je suis juste en train d'écrire une petite application qui prend une valeur à partir d'un fichier nommé " les DONNÉES.DAT " et renomme le dossier qui contient ce fichier avec cette valeur.
L' .py script s'exécute dans un autre dossier et permet à l'utilisateur de définir le chemin d'accès. Pour vous donner une meilleure idée, définis par l'utilisateur doit être comme (sur un mac) '/Users/Utilisateur/Bureau/DOSSIER " et "DOSSIER" devrait contenir des DONNÉES.DAT'.
C'est qu'une petite partie du code source ressemble:
try:
data = open('DATA.DAT').read()
data_data = data[12:17]
path_paths = path.rsplit('/')
basepath = '/'.join(path_paths[:-1])
chdir(basepath)
if path_paths[-1] <> data_data:
rename(path_paths[-1], data_data)
raw_input('Folder name has been corrected! Thank you.')
quit()
else:
print('Folder name was already correct! Thank you.')
quit()
except IndexError:
raw_input('ERROR!')
quit()
Bien, il fonctionne, mais il élever et d'exception lors d'un "DOSSIER" contient plus d'un fichier (en fait, un "DOSSIER" doit comporter des DONNÉES.DAT' et d'autres dossiers. Qui ne donne pas de problèmes.)...
Traceback (most recent call last):
File "/Users/User/Desktop/example.py", line 72, in <module>
rename(path_paths[-1], data_data)
OSError: [Errno 66] Directory not empty
Juste pour empêcher que cela se produit, est-il un moyen de le réparer? Merci.
OriginalL'auteur PyGuy | 2011-09-20
Vous devez vous connecter pour publier un commentaire.
Edit: L'outil est
shutil.déplacer
:en supposant
path_paths[-1]
est l'absolu du répertoire que vous souhaitez renommer, etdata_data
est la valeur absolue de nom de répertoire que vous voulez renommer.Le répertoire de destination ne doit pas déjà exister pour que cela fonctionne. Les deux sites n'ont pas besoin d'être sur le même système de fichiers.
Vieille réponse: Utiliser
os.renomme
au lieu deos.rename
.Il récursivement créer les répertoires.
Édité ma réponse.
Merci, maintenant ça fonctionne! Voici un exemple: path_paths[-1] = '/Users/Utilisateur/Bureau/lol' data_data = '/Users/Utilisateur/Bureau/tsa' ...ai-je raison?
qui semble bonne pour moi, tant que le
asd
répertoire n'existe pas déjà.OriginalL'auteur agf
Il est beaucoup plus facile à utiliser
shutil
.OriginalL'auteur Turnaev Evgeny