2016-04-08 3 views
1

bu hatayı alıyorum bulamıyor: Ben dizinde dosyayı biliyorumOs.walk xml dosyası

source = open(source, "rb") IOError: [Errno 2] No such file or directory: 'XXX.xml'

ama bunu bulamazsınız. "Dirs" for döngüsümü kullanmam gerektiğine inanıyorum?

jdata = json.load(open(json_path)) 
if os.path.isdir(osWalkpath): 
    for root, dirs, files in os.walk(path): 
     print root, dirs, files 
     for key, value in jdata.iteritems(): 
      for name in files: 
       try: 
        dirs.remove('.svn') 
       except ValueError: 
        pass 
       with open(os.path.join(root, name)) as fle: 
        content = fle.read() 
       FindName(content, key, name, value) # <--- It complains here 

def FindName(content, key, name, value): 
    if name.endswith('.arxml') and re.search(Wordboundry(key), content): 
     print "Name", key, "was found in", name, "\n" 
     OverrideXML(key, value, name) 

Ben dosya onu bulacaksınız olduğu tam yolunu verince gibi görünüyor, ama sadece yolun bir kısmını verince onu bulamaz.

Ör:

"C:\MyPath\XML\Dir1\ #Full path where the file exist 
"C:\MyPath\XML\ #Not the full path (but file exist in the subdir "Dir1) and gives error since it can't find the XML 

Bazı çıkışlar:

Name XYZ was found in XXX.xml <--- like wtf it finds the file

+0

Ve soru nedir? Tam olarak neyin yanlış olduğunu ve çalışmasını sağlamak için ne yapmanız gerektiğini biliyorsunuz. – apr

cevap

1

Sen zorunluluk aksi işletim sistemi geçerli dizinde dosyayı arar, dosyanın tam yolunu vermek.

Yolun tamamını vermemek istiyorsanız, geçerli çalışma dizini (os.chdir) değiştirin. Ancak, çalışma dizini değiştirdiğinizi ve önizleme dizinindeki dosyalara yeniden değiştirmeden erişemeyeceğinizi unutmayın.

Dosyanın tam yolunu bilgilendirmenizi öneririm.

0

çözüm

xx = os.path.relpath(os.path.join(root, name)) 
FindName(content, key, xx, value)