[Tutor] tree problem

Joel Goldstick joel.goldstick at gmail.com
Sun Sep 12 15:46:08 CEST 2010


On Sun, Sep 12, 2010 at 9:32 AM, Roelof Wobben <rwobben at hotmail.com> wrote:

>
>
> ________________________________
> > Date: Sun, 12 Sep 2010 09:08:18 -0400
> > From: joel.goldstick at gmail.com
> > To: tutor at python.org
>
> > Subject: Re: [Tutor] tree problem
> >
> >
> >
> > On Sun, Sep 12, 2010 at 7:54 AM, Lie Ryan
> > > wrote:
> > On 09/12/10 21:15, Roelof Wobben wrote:
> > >
> > >
> > > Hello,
> > >
> > > I have this problem.
> > >
> > > Write a program named litter.py that creates an empty file named
> > trash.txt in each subdirectory of a directory tree given the root of
> > the tree as an argument (or the current directory as a default).
> >
> > By default, Python has a recursion limit of 1000 deep; that is, your
> > function is calling itself 1000 times without returning.
> >
> > In this case, the only reason why you hit the recursion limit is if you
> > have a directory which is 1000 deep (quite unlikely, Windows has a
> > directory depth limit much lower than that).
> >
> > Or your function somehow never returns, in a typical recursive function,
> > it's usually because you have problem in the precondition.
> >
> > You really have two problems here:
> >
> > 1. You need to know how to write an empty file with the name
> > litter.py. You should probably write a function to see if you can do
> > that. That's pretty easy
> >
> > 2. You need to traverse a tree. I see you are using os module. You
> > should try help(os) while in your python shell to learn what methods
> > are available. Traversing a tree is also sometimes called 'walking'
> >
> > good luck
> >
> >
> > --
> > Joel Goldstick
> >
> >
> > _______________________________________________ Tutor maillist -
>
> > Tutor at python.org To unsubscribe or change subscription options:
> > http://mail.python.org/mailman/listinfo/tutor
>
> Hello Joel.
>
> Youre right.
>  Problem 1 is easily solved by using myfile = open ('filename', 'w')
> followed by myfile.close()
>
> Problem 2 is more difficult.
>
> I have to use recursion and as example the source of the tree command in
> linux is given.
> The traverse module looks like this :
>
>  def traverse(path, prefix='|--', s='.\n', f=0, d=0):
>

what's up with the prefix???


>     dirlist = getdirlist(path)
>     for num, file in enumerate(dirlist):
>

why are you using enumerate?  it gives you num which you never use
 for file in dirlist gives what you seem to be using

>         lastprefix = prefix[:-3] + '``--'
>         dirsize = len(dirlist)
>         if num < dirsize - 1:
>             s += '%s %s\n' % (prefix, file)
>         else:
>             s += '%s %s\n' % (lastprefix, file)
>         path2file = os.path.join(path, file)
>
>         if os.path.isdir(path2file):
>             d += 1
>             if getdirlist(path2file):
>                 s, f, d = traverse(path2file, '|   ' + prefix, s, f, d)
>         else:
>             f += 1
>     return s, f, d
>
> For me it looks like the pathfile = os.path.join(path, file)
> and then the s.f.d. rule take care that a subdir is entered.
>
what are s.f.d.  Can you use more descriptive names

>
> Am I right on this ?
>
> Roelof
>
>
>



-- 
Joel Goldstick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20100912/6884b93e/attachment.html>


More information about the Tutor mailing list