2012-05-11 2 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 не включает путь, а только имя файла. Вероятно, вы хотите вызвать Parser с аргументом os.path.join(fileName, child).

Смежные вопросы