Os.walk no funciona con el directorio adquirido a través de 'match.group (0) .encode (' string-escape ')'

Estoy usando os.walk para buscar archivos en directorios específicos.

Este es el código de prueba que no hace lo que debería:

import os, re

cwd = os.getcwd() 
directory= 'Box II'
dirpattern = re.compile(r'^.*?\\'+directory+'.*?', re.M)

for root, dirs, files in os.walk(os.path.abspath(cwd)):

    if dirpattern.search(root):
        match = dirpattern.search(root)
        match = match.group(0).encode('string-escape')

print match '''OUTPUT = D:\\dir1\\dir2\\dir3'''

for roots, dirss, filess in os.walk(match):
print filess '''OUPUT = gives nothing'''

Si escribo el nombre de directorio en el segundo bucle como este

  for roots, dirss, filess in os.walk('D:\\dir1\\dir2\\dir3'):
      print filess

Tengo la salida correcta.

Los nombres tienen espacios en blanco.

Lo que escribo es exactamente lo que se imprime para que coincida con el primer bucle. ¿Por qué no funciona?

¿El match.group (0) no es una cadena?

Si hago esto:

import os, re

cwd = os.getcwd() 
directory= 'Box II'
dirpattern = re.compile(r'^.*?\\'+directory+'.*?', re.M)

for root, dirs, files in os.walk(os.path.abspath(cwd)):

    if dirpattern.search(root):
        match = dirpattern.search(root)
        match = match.group(0)

y usa esta función:

escape_dict={'\\':r'\\'}

def raw(text):
"""Returns a raw string representation of text"""
 return "".join([escape_dict.get(char,char) for char in text])

match1= raw(match)
print match '''OUTPUT = D:\dir1\dir2\dir3 '''
print match1 '''OUTPUT = D:\\dir1\\dir2\\dir3''' 

for roots, dirss, filess in os.walk('match1'):

    print filess '''OUTPUT= nothing'''

os.walk tampoco funciona pero cuando hago esto:

match= 'D:\dir1\dir2\dir3'
match1= raw(match)
print match1 '''OUTPUT= D:\\dir1\\dir2\\dir3'''

os.walk funciona:

for roots, dirss, filess in os.walk('match1'):
    print filess '''OUTPUT= [file1,file2,file3]'''

¿Cuál es la diferencia entre el partido adquirido de una expresión regular?

match = match.group(0)
print match '''OUTPUT = D:\dir1\dir2\dir3 '''

y el partido se acaba de escribir como una cadena

match = 'D:\dir1\dir2\dir3'

Respuestas a la pregunta(1)

Su respuesta a la pregunta