Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Os.walk无法使用通过';match.group(0).encode(';字符串转义';)';_Python_Os.walk - Fatal编程技术网

Python Os.walk无法使用通过';match.group(0).encode(';字符串转义';)';

Python Os.walk无法使用通过';match.group(0).encode(';字符串转义';)';,python,os.walk,Python,Os.walk,我正在使用os.walk搜索特定目录中的文件 这是一个测试代码,它不会做它应该做的事情: 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):

我正在使用os.walk搜索特定目录中的文件

这是一个测试代码,它不会做它应该做的事情:

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'''
如果我像这样在第二个循环中输入dirname

  for roots, dirss, filess in os.walk('D:\\dir1\\dir2\\dir3'):
      print filess
我得到了正确的输出

这些名称有空格

我键入的内容正是第一个循环中为匹配而打印的内容。为什么不起作用

匹配组(0)不是字符串吗

如果我这样做:

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)
match= 'D:\dir1\dir2\dir3'
match1= raw(match)
print match1 '''OUTPUT= D:\\dir1\\dir2\\dir3'''
并使用此功能:

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也不起作用,但当我这样做时:

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)
match= 'D:\dir1\dir2\dir3'
match1= raw(match)
print match1 '''OUTPUT= D:\\dir1\\dir2\\dir3'''
os.walk工作:

for roots, dirss, filess in os.walk('match1'):
    print filess '''OUTPUT= [file1,file2,file3]'''
从正则表达式中获取的匹配有什么区别

match = match.group(0)
print match '''OUTPUT = D:\dir1\dir2\dir3 '''
和刚刚写出的字符串匹配

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

您可能应该从代码中删除
encode('string-escape')

Omg i c为什么没有答案,这里每分钟发布5个问题!!!你的间隔全错了。你能纠正它吗,因为你的代码可能有几个意思。嘿,本,你能指定什么间隔吗,我不明白你的意思谢谢你的回答Amr!我使用encode('string-escape')使打印的输出匹配。组(0)''output=D:\dir1\dir2\dir3''看起来像打印匹配。组(0)。encode('string-escape')''output=D:\\dir1\\dir2\\dir3'''如何以与我用代码等发布问题相同的方式对您的答案进行评论?
encode('string-escape'))
是您的代码失败的原因,因为当您稍后将match传递给
os.walk
,这就像您这样做:
os.walk('D:\\\\dir1\\\\dir2\\\\\dir3')
,尝试删除它,也许您的代码会工作。啊,好的!我编辑了我的问题,扔掉了.encode部分,并用\\替换\的功能。在底部向上看。仍然存在相同的问题。对于os.walk(os.path.abspath(match)):打印文件“''OUTPUT=nothing'”