0
votes

Python: faire un dossier avec un nombre incrémenté en fonction des dossiers existants avec le même nom

Lorsque quelqu'un exécute le script Python, je souhaite créer un dossier nommé ID + '1' et ensuite la prochaine fois si quelqu'un exécute à nouveau le script, il doit mettre le numéro suivant, c'est-à-dire ID2 pour créer un nouveau dossier dans le même répertoire.

J'ai essayé de faire un programme xxx

mais cela crée 10 dossiers à la fois mais je veux qu'un seul dossier soit créé lorsque quelqu'un exécute le script.


0 commentaires

4 Réponses :


1
votes

Ce que vous pouvez faire est d'utiliser le système d'exploitation pour rechercher quels dossiers sont dans le directeur actuel, puis apportez l'ID de numéro le plus élevé et créez un nouveau dossier avec cet ID + 1.

import os

all_folders = os.listdir(path)
all_folders.sort()
latest = all_folders[-1].replace('ID', '')
new = int(latests) + 1
os.makedirs('ID'+str(latest))


1 commentaires

Cela fonctionne que s'il existe déjà un dossier à l'intérieur du dir. Merci pour l'aide



1
votes

Je pense que vous devez comprendre ce que fait la boucle 'for'. Il présente essentiellement le code intérieur autant de fois que vous le souhaitez ou réglé.

Dans votre code, la boucle pour la boucle est itérale 10 fois. C'est la raison pour laquelle vous obtenez 10 dossiers créés lorsque vous exécutez votre script une fois.

Dans votre cas, vous souhaitez supprimer la boucle et créer un seul dossier. Mais, la chose importante est que vous souhaitez connaître le nombre de dossiers que vous avez créés précédemment pour que le numéro de votre prochain nom de dossier suit le précédent.

Pour ce faire, vous pouvez lire tous les dossiers de votre répertoire et obtenir le nom du dernier nom et analyser pour obtenir le dernier numéro. Ensuite, augmentez le nombre par un et créez le dossier suivant.


0 commentaires

1
votes

Comment de celui-ci. Si l'instruction vérifie si le candidat de chemin est déjà existé ou non. Si Path_Cand n'existe pas, vous pouvez créer un répertoire et casser la boucle

import os

path = 'C:\\Users\\Documents\\Python\\Projects'

for i in range(1, 11):
    path_cand = path + f"\\ID{i}"
    if not os.path.exists(path_cand):
        os.mkdir(path_cand)
        break


2 commentaires

Est-il possible de supprimer la plage car cela s'arrête à ID10 et je ne veux pas faire cela?


Que dis-tu de ça? Je n'utilise pas de boucle et je ne trouve que des dossiers qui inclut "ID" dans leur nom. Après cela, comptez le nombre de fichiers et générer dossier `` `Import OS racine = 'C: \\ utilisateurs \\ Documents \\ Python \\ Folder_list_list = [F Pour F in Os.listdir (racine) si" ID "in f] os.mkdir (f" id {len (folder_list) +1} "` `` ``



1
votes

Pour chaque script TIME exécuté pour créer un répertoire, vous devez avoir besoin d'une variable à enregistrer. Dans votre code, je pense que la boucle est inutile. J'ai résolu de cette manière pour chaque script de course. Supprimer le fichier .nnypy généré de votre répertoire, lorsque vous souhaitez démarrer à partir de 1 xxx


0 commentaires