os.walk没有给出正确的道路

时间:2013-06-20 13:58:58

标签: python os.walk

我使用以下代码从目录中打开文件。

for root, dirs, files in os.walk("./Boards"):
#Eliminate hidden files
files=[f for f in files if not f.startswith('.')]
for f, file in enumerate(files):
    print "ROOT: " + str(root)
    fileName=os.path.join(root,file)
    print fileName

当我运行此操作时,我收到此错误

ROOT: ./Boards/AbuseSupport
./Boards/AbuseSupport/thread_title_11151.xml
ROOT: <Element 'board' at 0x1048ae450>

任何人都可以解释这是如何发生的以及如何解决它

2 个答案:

答案 0 :(得分:1)

我认为问题在于,当您走过目录并同时解析XML时,您重用 root变量。在解析了一个XML文件之后,root变量成为解析树的根元素,但在循环的下一次迭代中,您仍然使用root变量作为目录名。

答案 1 :(得分:0)

我创建了一个基本目录结构:

/Boards
/Boards/a.txt
/Boards/b.txt
/.ssh

我使用了以下代码:

import os

for root, dirs, files in os.walk("./Boards"):
    #Eliminate hidden files
    files=[f for f in files if not f.startswith('.')]
    for f, file in enumerate(files):
        print "ROOT: " + str(root)
        fileName=os.path.join(root,file)
        print fileName

我收到了以下回复:

>> ROOT: ./Boards
>> ./Boards/a.txt
>> ROOT: ./Boards
>> ./Boards/b.txt
>> ROOT: ./Boards
>> ./Boards/c.txt

Mac OS 10.8.3 - Homebrew Python 2.7.3

我认为您的问题是,您已将root用户分配给XML Element对象。是否有其他使用XML库的代码?