2012-05-11 11 views
1

私は*.vmファイルを検索し、ラインを読むことになって、私がやった別の例外IOError:[errnoを2]、そのようなファイルやディレクトリはありませんPythonの

モジュール、それらを送信しようと、コードのこの部分を持っています。

これはメインファイルである:

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を呼び出すことをお勧めします。