Os.walk não funciona com o diretório adquirido através de 'match.group (0) .encode (' string-escape ')'

Eu estou usando os.walk para procurar por arquivos em diretórios específicos.

Este é o testcode que não fará o que deve:

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'''

se eu digitar o dirname no segundo loop como este

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

Eu recebo a saída certa.

Os dirnames têm espaços em branco.

O que eu digito é exatamente o que é impresso para combinar fora do primeiro loop. Por que isso não funciona?

O match.group (0) não é uma string?

Se eu fizer isso:

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)

e use esta função:

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 não funciona, mas quando eu faço isso:

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

os.walk trabalha:

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

Qual é a diferença entre o jogo adquirido de um regex?

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

e combinar apenas escrito como uma string

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

questionAnswers(1)

yourAnswerToTheQuestion