2017-07-25 4 views
0
import sys 

filepath = "D:\\Desktop\\SIGN IN OUT\\" 
times = ["min.txt","hour.txt","datein.txt","dateout.txt"] 

while True: 
    z = input("Enter Your First and Last Name. Just don't put a . in your name. : ") 
    y = z+'\\'+z 
    for x in range(len(times)): 
     f = open(filepath+y+times[x],'w') 
     f.write('0') 
     f.close() 
+3

Obtenez-vous des erreurs spécifiques? Qu'est-ce qui fait que la création de fichiers ne fonctionne pas? – HunterM267

Répondre

3

La jonction de fichiers avec \\ n'est pas la meilleure façon de le faire. La méthode recommandée utilise os.path.join à partir du module os:

import os 

while True: 
    z = input("Enter Your First and Last Name. Just don't put a . in your name. : ") 
    y = os.path.join(*z.split()) 
    for x in times: 
     with open(os.path.join(filepath, y, x), 'w') as f: 
      f.write('0') 

Je recommande aussi -

  1. L'utilisation d'un gestionnaire de contexte pour gérer vos fichiers, il rend votre propre code.

  2. Enumérer les times directement plutôt que les indices


En outre, comme l'affirme Jean-François Fabre dans sa réponse, vous feriez mieux d'utiliser os.mkdir pour créer tous les répertoires qui n'existent pas avant de créer des fichiers en eux. Here's une bonne référence.

+1

Cela vaut-il la peine de mentionner le choix de faire 'for x dans times:' à la place de la plage, aussi? –

+0

Pouvez-vous s'il vous plaît ajouter «importer os» au début de votre code? – Ben

+2

Les deux, fait. Je vous remercie. –

2

le problème est que dans ce code:

z = input("Enter Your First and Last Name. Just don't put a . in your name. : ") 
y = z+'\\'+z 
  • y est deux fois la même valeur, rejoint par \\ (ne vous donnera pas les répertoires que vous attendez, mais ce n'est pas la principale problème)
  • mais lorsque vous essayez d'ouvrir votre fichier, vous le faites dans un répertoire qui n'existe probablement pas .

Vous devrez ajouter (à l'aide os.path.join est plus propre que @COLDSPEED noté):

my_dir = os.path.join(filepath, y) 
if not os.path.isdir(my_dir): 
    os.makedirs(my_dir) # creates dirs if doesn't exist, with full path 

avant d'ouvrir vos fichiers de sorte que le répertoire censé les contenir existe (open échoue si le répertoire doesn 't existent)