Question

I am using the following code to open files from a directory.

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

When I run this i get this error

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

Can anyone explain how this happens and how I can fix it

Was it helpful?

Solution

I think the problem is that you're reusing the root variable while you're walking the directory and parsing XML at the same time. After you've parsed one XML file, the root variable became the root element of parse tree, but in next iteration of the loop, you are still using root variable as the directory name.

OTHER TIPS

I created a base directory structure of:

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

I used the following code:

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

And I got the following response:

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

I think you issue is that somehow you have assigned root to an XML Element object. Is there other code using an XML library?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top