2016-05-14 9 views
2

Ich arbeite an einem sekundären Projekt, das die Proteindatenbank nach Peptiden durchsucht, die bestimmten Bedingungen entsprechen.Looping durch einen Ordner mit Dateien?

Ich habe einen Ordner mit einem großen Teil dieser .pdb-Dateien und mein Plan ist, diese Datei auf dem Desktop zu setzen, dann eine For-Schleife durch alle Dateien in diesem Ordner zu scannen und alle notwendigen Daten zu sammeln . Ich bin jedoch bei der Importphase ins Stocken geraten. Die Datei/das Verzeichnis wird nicht erkannt. Ich füge den folgenden Code ein:

import os 
# - - - - - 
#Sector C - Iteration through a folder containing all .pdb files. 
for fi in os.listdir('C:/Users/David/Desktop/pdb_Files'): 
    if os.path.isfile(os.path.join('C:/Users/David/Desktop/pdb_Files', fi)):   
    listatom,R3_coordinates,posg=[],[],[] 
    for line in open(fi): # < - - - Issue occurring here. 
     ist = line.split() 
     id = ist[0] 
     if id == 'ATOM': 
      typ = ist[2] 
      if Peptide1 == 'PRO': 
       if typ == 'CA': 
        res,toc,ac=ist[3:6] 
        pos = [float(i) for i in ist[6:9]] 
        if ac >= '0': 
         listatom.append([int(ist[1]),typ,res,toc,ac,np.array(pos)]) 
         R3_coordinates.append([int(ist[1]),np.array(pos)]) #List of ALL coordinates. 
        if Plot == True: 
         posg.append(pos) 

Alle helfen geschätzt.

+0

Möglichen Duplikat [Looping durch ein Verzeichnis von Dateien in Python] (http://stackoverflow.com/questions/13480316/looping-through- a-Verzeichnis-of-files-in-python) – SparkAndShine

+0

Mögliches Duplikat von [Wie listet man alle Dateien eines Verzeichnisses in Python auf] (http://stackoverflow.com/questions/3207219/how-to-list-all-files -of-ein-Verzeichnis-in-Python) –

Antwort

2

Dies ist Python. Bevor Sie etwas schreiben, um alle Dateien in einem Verzeichnis zu erfassen, denken Sie darüber nach, ob dies ein häufiges Problem ist, mit dem sich andere zuvor beschäftigt haben.

import glob 
print glob.glob("C:/Users/David/Desktop/pdb_Files/*.pdb") 
#this returns ["C:/Users/David/Desktop/pdb_Files/file1.pdb", "C:/Users/David/Desktop/pdb_Files/file2.pdb", ...] 

Die glob-Modul kann Sie Wildcard-Match auf Dateien in einem Verzeichnis, so die obige Zeile mit Rückkehr einer Liste aller Dateien in dem Ordner, den pdb_Files mit PDB beenden.

+0

Ich werde dieses Modul mehr untersuchen, das kann sowohl für dieses Projekt nützlich sein als auch für ein anderes, an dem ich gerade arbeite. – David

1

Sie müssen den vollständigen Pfad zum open bieten:

path = os.path.join('C:/Users/David/Desktop/pdb_Files', fi) 
if os.path.isfile(path):   
    listatom,R3_coordinates,posg=[],[],[] 
    for line in open(path): 
+0

Bei weiterer Überlegung sehe ich was ich falsch gemacht habe. Das funktioniert gut. – David