recursion seems a little easier:
root = '/tmp/base'
import os
def fill(dir):
subs = os.listdir(dir)
return dict(zip(subs, (fill(os.path.join(dir,s)) for s in subs)))
print {root : fill(root)}
# {'/tmp/base': {'child_1': {'sub_1': {}}, 'child_2': {'sub_2': {}}}}
On Tue, Jun 22, 2010 at 3:39 PM, shawnpatapoff <[email protected]> wrote:
> Well, I had some ideas what I wanted to do, but in the end went with
> this:
>
> def populateDict(self, pth):
> lastDir = None
> vStr = None
> for root, dirs, files in os.walk(pth):
> r= root.split('geo_cache')[1][1:]
> if len(r) > 0:
> keys = r.split('/')
> kStr = 'self.cacheDict'
> for k in keys:
> kStr += '["' + k + '"]'
> kStr+='={}'
> exec(kStr)
>
> On Jun 22, 12:14 pm, Chris G <[email protected]> wrote:
>> So are you stuck on the correctness or the efficiency of what you have?
>>
>> On Tue, Jun 22, 2010 at 1:39 PM, shawnpatapoff <[email protected]>
>> wrote:
>> > Hey Chris,
>>
>> > I looked at os.walk and it does work nice. My issue is actually
>> > capturing the data into a nested dictionary correctly.
>>
>> > On Jun 22, 10:37 am, Chris G <[email protected]> wrote:
>> >> If it's an existing directory structure, you could just use os.walk.
>>
>> >> On Tue, Jun 22, 2010 at 1:08 PM, shawnpatapoff <[email protected]>
>> >> wrote:
>> >> > Hey Everyone,
>>
>> >> > I've been trying a decent solution for getting a dictionary filled
>> >> > with a specific directory structure.
>>
>> >> > base-
>> >> > - child_1-
>> >> > | -sub_1
>> >> > |
>> >> > - child_2-
>> >> > - sub_2
>>
>> >> > I would look like:
>> >> > myDict{base:{child:{sub_1}},{child_2:{sub_2}}}
>>
>> >> > Been messing with various methods, non which seem to be that
>> >> > efficient. Anyone have any ideas that they would want to share?
>>
>> >> > -s
>>
>> >> > --
>> >> >http://groups.google.com/group/python_inside_maya
>>
>> > --
>> >http://groups.google.com/group/python_inside_maya
>>
>>
>
> --
> http://groups.google.com/group/python_inside_maya
--
http://groups.google.com/group/python_inside_maya