J'essaie de créer un script python appelé script.py avec la fonction new_directory qui crée un nouveau répertoire dans le répertoire de travail actuel, puis crée un nouveau fichier vide dans le nouveau répertoire et renvoie la liste des fichiers dans ce répertoire . La sortie que j'obtiens est ["script.py"] qui semble correcte mais me donne cette erreur:
RuntimeErrorElement (RuntimeError, Erreur sur la ligne 5: directory = os.mkdir ("/ home / PythonPrograms") FileExistsError: [Errno 17] Le fichier existe: '/ home / PythonPrograms' )
import os def new_directory(directory, filename): if os.path.isdir(directory) == False: directory = os.mkdir("/home/PythonPrograms") os.chdir("PythonPrograms") with open("script.py", "w") as file: pass # Return the list of files in the new directory return os.listdir("/home/PythonPrograms") print(new_directory("PythonPrograms", "script.py"))
Comment corriger et pourquoi est-ce faux?
3 Réponses :
Je suppose que l'erreur que vous obtenez est que vous ne pouvez pas basculer les répertoires vers PythonPrograms
? Ce serait parce que votre répertoire de travail actuel python ne le contient pas. Si vous écrivez plus explicitement le répertoire vers lequel vous voulez basculer, par exemple en mettant os.chdir ("/ home / PythonPrograms")
, alors cela peut fonctionner pour vous.
Dans l'idéal, vous devriez nous donner des traces de pile ou plus d'informations sur les erreurs, cependant
Je ne sais pas pourquoi dans votre code vous avez avec open ("script.py", "w") comme fichier: pass
,
mais voici mt way: p>
import os os.mkdir('.\\Newfolder') # Create a new folder called Newfolder in the current directory open('.\\Newfolder\\file.txt','w').close() # Create a new file called file.txt into Newfolder print(os.listdir('.')) # Print out all the files in the current directory
Cela laisserait vraisemblablement le fichier ouvert. L'utilisation de la syntaxe du gestionnaire de contexte ferme à nouveau le fichier. open ('. \\ Newfolder \\ file.txt', 'w'). close ()
corrigerait ce problème
Comme d'autres l'ont dit, il est difficile de déboguer sans l'erreur. Dans les bonnes circonstances, votre code fonctionnera sans erreur. Comme @Jack l'a suggéré, je suppose que votre répertoire actuel n'est pas / home
. Cela signifie que vous avez créé un répertoire appelé PythonPrograms
dans le répertoire / home
. os.chdir ("PythonPrograms")
essaie de changer le répertoire en
, qui n'existe pas.
J'ai essayé de retravailler votre code (sans le changer complètement), en quelque chose qui devrait fonctionner dans tous les cas. Je pense que la leçon ici est de travailler avec les variables que vous avez déjà (c'est-à-dire répertoire
), plutôt que de les coder en dur dans la fonction.
import os def new_directory(directory, filename): if not os.path.isdir(directory): # Create directory within current directory # This is working off the relative path (from your current directory) directory = os.mkdir(directory) # Create file if does not exist # this is a one-liner version of you with...pass statement open(os.path.join(directory, filename), 'a').close() # Return the list of files in the new directory return os.listdir(directory) print(new_directory("PythonPrograms", "script.py"))
J'espère que cela vous aidera.
Merci @ J.Warren En théorie, cela a du sens. J'ai eu une erreur après l'exécution: Erreur sur la ligne 17: print (new_directory ("PythonPrograms", "script.py")) Erreur sur la ligne 12: open (os.path.join (répertoire, nom de fichier), 'a') .Fermer()
Ça marche. Juste eu à spécifier le chemin du répertoire. Merci encore @ J.Warren
Quelle est l'erreur?
Sans rapport: au lieu d'écrire:
if os.path.isdir (directory) == False:
, veuillez simplement écriresinon os.path.isdir (répertoire)
.Oh désolé a propos de ca. Voici l'erreur que j'obtiens lors de l'exécution du script: RuntimeErrorElement (RuntimeError, Error on line 5: directory = os.mkdir ("/ home / PythonPrograms") FileExistsError: [Errno 17] Le fichier existe: '/ home / PythonPrograms')