0

I have a small issue with a python program that I wrote to extract some information from a special text file. The loop (code below) needs to execute my function extract_zcoords() over 500 files (1 file gives one list) so that I can build a dataset.

import os

def extract_zcoord(filename): 
    f = open(filename, 'r')         
    ... # do something with f


### LOOP OVER DIRECTORY 
location = '/Users/spyros/Desktop/3NY8MODELSHUMAN/HomologyModels' 

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

THE ERROR: The IOException No such file or directory is the one that occurs, so for some reason python is not accessing the files. I have checked directory pathname (location) and file permissions, and they are correct (read+write). Any ideas why an IOError would be reported when the files do exist and pathname is correct?

Any ideas what might be wrong?

Aran-Fey
  • 39,665
  • 11
  • 104
  • 149
Spyros
  • 249
  • 1
  • 3
  • 15
  • Can anyone think of a reason not to always use raw strings when specifying paths? Is there a downside to doing this? (*not* suggesting this as a cause of the problem, just got me thinking about minimizing potential problems with paths etc) – Levon May 29 '12 at 15:55

2 Answers2

5

Probably, you should use os.path.join when you call

zdata.extend(extract_zcoord(filename))

like this:

zdata.extend(extract_zcoord(os.path.join(location, filename)))
ekini
  • 100
  • 7
2

You need to join the dirname and filename into one complete path:

location = '/Users/spyros/Desktop/3NY8MODELSHUMAN/HomologyModels' 
for filename in os.listdir(location):
    filename = os.path.join(location, filename)
Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343