J'ai créé ce programme pour renommer tous mes noms de fonds d'écran aléatoire à Mais chaque fois que j'exécute le code, les demi-fichiers sont renommés que les autres deviennent supprimés en permanence. P> p> wallpaper1 code>,
wallpaper2 code> et ainsi de suite à l'aide de ce code:
4 Réponses :
Il est préférable de sauvegarder les fichiers renommés dans un dossier séparé et vous pouvez utiliser Assurez-vous d'avoir un autre dossier créé appelé wallpapers2 dans le dossier Photos. P> p> énumérer () code> pour les numéros:
(suggérant un changement plutôt petit ici, mais comme une réponse parce qu'il est difficile de le montrer sans ambiguïté via les commentaires.) em> Insérez un chèque si le nouveau nom de fichier existe, et si oui, Continuez ensuite à incrémenter le nombre jusqu'à ce que vous en obteniez un qui ne le fait pas. Cela se protégera contre les fichiers d'écrasement déjà renommés lors de l'exécution du même script précédemment. P> import os
path = os.chdir("/home/samipkarki/Pictures/Wallpapers")
value = 1
for file in os.listdir("path"):
new_filename = f'wallpaper{value}.jpg'
while os.path.exists(new_filename):
value += 1
new_filename = f'wallpaper{value}.jpg'
os.rename(file, new_filename)
value += 1
Merci de votre suggestion, cela m'a vraiment aidé à apprendre de nouvelles choses et à comprendre le bon code, mais le seul problème que je suis confronté à votre code était si je le faisais une fois que cela le renommerait, mais après la plus grande valeur de l'exécution précédente et, si, Si je courais à nouveau, cela me donnerait la sortie attendue.so, j'ai modifié le code un peu et maintenant ça marche parfaitement bien.
Ceci est un détail où il dépend d'une plate-forme de bits. Si vous utilisiez Windows, vous auriez obtenu un C'est ce que la documentation dit: P> Renommez le fichier ou le répertoire SRC à DST. Si DST existe, l'opération échouera avec une sous-classe OsError dans un certain nombre de cas: P>
sur Windows, si DST existe une FileExistsError est toujours soulevée. P>
sur UNIX, si SRC est un fichier et un fichier DST est un répertoire ou vice-versa, une isadirectoryerror ou une notadirectoryError sera soulevée respectivement. Si les deux sont des répertoires et la DST est vide, DST sera remplacé silencieusement. Si DST est un répertoire non vide, un OsError est soulevé. Vous devez donc effectuer une vérification manuelle si le fichier existe, et si cela le fait, gérez-le d'une manière ou d'une autre. P> Une chose qui n'affectera probablement pas votre programme est que Un chèque sur cette forme (de la réponse de Alaniwi) Formulaire: P> FileExistError CODE> Exception, mais pas sur UNIX.
while True:
value += 1
new_filename = f'wallpaper{value}.jpg'
try:
os.open(new_filename, os.O_CREAT | os.O_EXCL)
break
except FileExistsError:
pass
Je trouve la réponse en raison de la suggestion de @Awani. Cela a fonctionné pour moi si vous avez repéré un problème s'il vous plaît corrigez-moi. Le problème a été mentionné dans la réponse que le code remplace le fichier existant afin que ce code vérifie si le fichier existe si celui-ci existe alors, il ne sera pas simplement renommé qu'il le renommera.
import os path = os.chdir("/home/samipkarki/Pictures/Wallpapers") value = 1 for file in os.listdir(path): print(os.listdir(path)) new_filename = f'wallpaper{value}.jpg' if os.path.exists(new_filename): pass else: os.rename(file, new_filename) value += 1
Si vous le renommez à quelque chose qui existe déjà, il remplacera l'ancien fichier. Peut-être que c'est le cas?
Oui, j'imagine si vous exécutez ce code plus d'une fois quelque chose de mauvais pourrait arriver.
@quamrana vous avez raison mais pourquoi cela se produit et quelle est la solution s'il vous plaît aider
Qu'en est-il des réponses ci-dessous? Ils semblent offrir des suggestions positives.