proyectos ejemplos python file-io ioerror fileparsing

python - ejemplos - django



IOError al intentar abrir archivos existentes (2)

Necesita unir el nombre de directorio y el nombre de archivo en una ruta completa:

location = ''/Users/spyros/Desktop/3NY8MODELSHUMAN/HomologyModels'' for filename in os.listdir(location): filename = os.path.join(location, filename)

Tengo un pequeño problema con un programa de Python que escribí para extraer información de un archivo de texto especial. Lo que intento hacer es fusionar ~ 500 listas y luego usar la lista fusionada resultante. El ciclo (código a continuación) necesita ejecutar mi función extract_zcoords () sobre 500 archivos (1 archivo da una lista) para que pueda construir un conjunto de datos.

-----EL CÓDIGO

#!/usr/local/bin import os,string from sys import version # ******** def extract_zcoord(filename): '''''' collect z-coordinates of atoms from charged amino acids '''''' f = open(filename, ''r'') pdbfile = f.readlines() ### Code that processes file and builds z_coords1 list ### .... for i in range(len(charged_groups)): z_coords1.append(float(charged_groups[i][48:54])) print z_coords1 #diagnostic return z_coords1 # ******** ### LOOP OVER DIRECTORY location = ''/Users/spyros/Desktop/3NY8MODELSHUMAN/HomologyModels'' zdata = [] for filename in os.listdir(location): try: zdata.extend(extract_zcoord(filename)) except NameError: print "No such file!" except SyntaxError: print "Check Your Syntax!" except IOError: print "PDB file NOT FOUND!" print ''Z-VALUES FOR ALL CHARGED RESIDUES'' print zdata #diagnostic import pickle f1 = open("z_coords1.dat", "wb") pickle.dump(zdata, f1) f1.close() f2 = open("z_coords1.dat", "rb") zdata1 = pickle.load(f2) f2.close() assert zdata == zdata1, "error in pickle/unpickle round trip!"

EL ERROR: IOException es el que ocurre, por lo que, por alguna razón, python no está accediendo a los archivos. He comprobado el nombre de ruta del directorio (ubicación) y los permisos de archivos, y son correctos (lectura + escritura). ¿Alguna idea de por qué un IOError se informaría cuando los archivos existen y el nombre de ruta es correcto?

Intenté os.pathisfile (ubicación) y me devuelve FALSE. No estoy seguro de qué hacer con eso, ya que cuando lo intento

for filename in os.listdir(location): print filename

¡Obtengo todos los nombres de los archivos impresos en la pantalla! ¿Alguna idea de lo que podría estar mal?


Probablemente, debe usar os.path.join cuando llame

zdata.extend(extract_zcoord(filename))

Me gusta esto:

zdata.extend(extract_zcoord(os.path.join(location, filename)))