2017-07-03 3 views
0

Im essayant de créer des répertoires et des fichiers dans chaque dossier, en utilisant les données d'un fichier d'entrée.Python mkdir problème, fichier existe erreur

Il travaille pour la première, mais me donne alors la FileExistsError

Je suis fixais pendant des heures semblent maintenant et ne peux pas l'obtenir, toute aide serait appréciée.

données du fichier ressemble à ce

>unique id 
string of unknown length 

et le code que j'ai essayé est ce

import os 


# find a character 

CharLocArray = [] 

NewLineArray = [] 

with open('/home/tjbutler/software/I-TASSER5.0/seqdata/Egg_protein/seq.fasta', 'r') as myfile: 

    data = myfile.read() 
    GreaterThan = '>' 
    NewLine = '\n' 

    # code to read char into var 
    # myfile.read().index('>') 
    index = 0 
    while index < len(data): 
     index = data.find('>', index) 
     CharLocArray.append(index) 
     if index == -1: 
      break 

     index += 2 

    index2 = 0 
    while index2 < len(data): 
     index2 = data.find('\n', index2) 
     NewLineArray.append(index2) 
     if index2 == -1: 
      break 

     index2 += 2 

    i = 0 
    print(len(CharLocArray)) 

    while i < len(CharLocArray): 
     print(i) 
     CurStr = data[CharLocArray[i]:] 
     CurFolder = CurStr[CharLocArray[i]:NewLineArray[i]] 
     print(CurFolder) 
     CurData = CurStr[CharLocArray[i]:CharLocArray[i + 1]] 
     print(CurData) 
     newpath = r'/home/tjbutler/software/I-TASSER5.0/seqdata/Egg_protein/' 
     DirLocation = newpath + CurFolder 
     print(DirLocation) 
     FileLocation = DirLocation + '/seq.fasta' 
     print(FileLocation) 
     i = i + 1 
     print(i) 
     if not os.makedirs(DirLocation): 
      os.makedirs(DirLocation) 
      file = open(FileLocation, 'w+') 
      file.write(CurData) 
      file.close() 

Répondre

3

os.makedirs() ne doit pas être utilisé de cette façon - utiliser son argument exist_ok à la place:

os.makedirs(DirLocation, exist_ok=True) # instead of the condition! 
    with open(FileLocation, 'w+') as f: 
     f.write(CurData) 

également, ne créez pas manuellement vos propres chemins (ie FileLocation = DirLocation + '/seq.fasta'), utilisez les fonctionnalités os.path à la place, par exemple: FileLocation = os.path.join(DirLocation, seq.fasta).