1

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

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>

谁能解释这是如何发生的以及我如何解决它

4

2 回答 2

1

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

于 2013-06-20T14:18:28.150 回答
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 - 自制 Python 2.7.3

我认为您的问题是您以某种方式将 root 分配给了 XML Element 对象。是否有其他代码使用 XML 库?

于 2013-06-20T14:19:59.530 回答