IOError при попытке открыть существующие файлы

У меня небольшая проблема с программой python, которую я написал, чтобы извлечь некоторую информацию из специального текстового файла. То, что я пытаюсь сделать, состоит в объединении ~ 500 списков, а затем использовать полученный объединенный список. Цикл (код ниже) должен выполнить мою функцию extract_zcoords () над 500 файлами (1 файл дает один список), чтобы я мог построить набор данных.

—–КОД

#!/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!" 

ОШИБКА: IOException – это тот, который возникает, поэтому по какой-то причине python не обращается к файлам. Я проверил путь к каталогу (местоположение) и разрешения файлов, и они верны (читайте + пишите). Любые идеи о том, почему сообщение IOError будет указано, когда файлы действительно существуют, и имя пути правильное?

Я попробовал os.pathisfile (location), и он возвращается FALSE. Я не совсем уверен, что с этим делать, поскольку, когда я пытаюсь

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

Я получаю все имена файлов, напечатанные на экране! Какие-нибудь идеи, что может быть неправильным?

Вам нужно присоединиться к имени и имени файла в один полный путь:

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

Вероятно, вы должны использовать os.path.join, когда вы вызываете

 zdata.extend(extract_zcoord(filename)) 

как это:

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