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)))