2012-05-11 4 views
1

내가 *.vm 파일을 찾기 위해 노력하고,이 코드 조각을 가지고 있고, 라인을 읽을 생각 나는 한 다른IO 오류 : [errno를 2] 해당 파일이나 디렉토리 파이썬

모듈에 보냅니다.

이 주요 파일입니다

def VMTranslte(fileName): 
print "FILEOVER ",fileName 
from parser import Parser 
from codeWriter import CodeWriter 
if (fileName[-3:] == ".vm"): 
    outputFile = fileName[:-3]+".asm" 
    myWrite = CodeWriter(outputFile) 
    myWrite.setFileName(fileName) 
    myParser = Parser(fileName) 
    myWrite.setFileName(fileName); 
    translate(myParser,myWrite) 
else: 
    if fileName[-1:] == "/": <===== CHECKS FOR DIRECTORY 
     mystr = fileName.split('/')[-2] 
     mystr = mystr.split('.')[0]+".asm" 
     outputFile = fileName+mystr 
    else: 
     outputFile = fileName+".asm" 
    myWrite = CodeWriter(outputFile) 
    for child in os.listdir(fileName): 
     if child.endswith('.vm'): <===== CHECK IF THERE IS *.vm FILE 
      print "CHILD: ",child <===== PRINTS THE FILE WANTED (MEANING FINDS IT) 
      myWrite.setFileName(child); 
      myParser = Parser(child) <===== CALLS THE READER MODULE DESCRIBED AT THE BOTTOM 
      translate(myParser,myWrite) 
myWrite.close() 

모듈 라인을 읽는 가정 :

#Constructor for Parser module. 
def __init__(self,fileName): 
    import re 
    self.cmds = [] 
    self.counter = 0 
    myFile = open(fileName, 'r') <=====ERROR OVER HERE 
    fLines = myFile.readlines() 
    for value in fLines : 
     lineStrip = value.strip() 
     if not (re.match("//",lineStrip) or len(lineStrip)==0): 
      self.cmds.append(lineStrip) 

오류가있다는 :

File "/Users/***/Desktop/dProj7/parser.py", line 19, in __init__ 
    myFile = open(fileName, 'r') 
    IOError: [Errno 2] No such file or directory: 'BasicTest.vm' 

는 스크립트가 분명하다 파일을 찾습니다 (첫 번째 루프에 있음).

여기에 무슨 일이 일어나고 있습니까?

답변

3

os.listdir에는 경로 만 포함되며 파일 이름 만 포함됩니다. 인수로 os.path.join(fileName, child)으로 Parser를 호출하고 싶을 것입니다.

관련 문제