Amit Khemka: > On 5 Apr 2007 04:58:22 -0700, Sergei Minayev <[EMAIL PROTECTED]> wrote: > > Hi All! > > Can you please help me with the following problem: > > I need to store a copy of local folders structure in MySQL database. > > I have chosen the following table structure for that: > > ------------------------------------------------ > > | id | id_uplink | folder_name | > > ------------------------------------------------ > > id - unique property of each folder. > > id_uplink - id of upper level folder is stored here (for example: if > > id of c:\test is 1, than id_uplink of c:\test\python equals 1). > > folder_name - name of folder. > > You see, i dont want to store the path list, but the structure. > > > > The question is how to implement that in Python. I easily made it in C+ > > + using recursion. But, unfortunately, I can't figure it out how to > > make it in python using os.walk function (or can you recommend smth. > > else???). :( Though it looks quite simple, but anyway. > > > > Best Regards, > > os.walk should be more than sufficient in your case. You can navigate > the directory structure and at each 'new' directory find its parents > id and assign a new-id to this 'new' directory. > > An Example: > > import os > root='/my/root/directory' > id =0 > tree={root:(-1, id)} > id+=1 > for path, dirs, files in os.walk(root): > for dir in dirs: > if not tree.has_key(path+'/'+dir): > tree[path+'/'+dir]=(tree[path][1], id) > id+=1 > > It stores ids as a tuple (parent_id, id) in a dictionary(tree). Should > be straight forward to modify to your requirements. Also you can make > the following code more efficient by saving/caching some lookups ! > > Cheers, > -- > ---- > Amit Khemka -- onyomo.com > Home Page: www.cse.iitd.ernet.in/~csd00377 > Endless the world's turn, endless the sun's Spinning, Endless the quest; > I turn again, back to my own beginning, And here, find rest.
Thanks! Your code example was really helpful! -- http://mail.python.org/mailman/listinfo/python-list