Os.walk找不到xml文件

时间:2016-04-08 13:38:18

标签: python xml

我收到此错误:

  

source = open(source,“rb”)     IOError:[Errno 2]没有这样的文件或目录:'XXX.xml'

我知道该文件存在于目录中,但它找不到它。我相信我需要使用我的for循环中的“dirs”吗?

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)

似乎当我给出文件所在位置的完整路径时,它会找到它,但是当我只提供路径的一部分时,它将无法找到它。

例如:

"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

一些输出:

  

名称XYZ在XXX.xml中找到&lt; ---与wtf一样,它找到了文件

2 个答案:

答案 0 :(得分:1)

必须才能提供文件的完整路径,否则操作系统将搜索当前目录中的文件。

如果您不想提供完整路径,请更改当前的工作目录(os.chdir)。但请记住,您正在更改工作目录,如果不再更改它,您将无法访问预览目录中的文件。

我强烈建议您通知文件的完整路径。

答案 1 :(得分:0)

解决方案

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