[plt-scheme] Fooling around w/files and directories

From: John Clements (clements at brinckerhoff.org)
Date: Mon Jun 22 23:39:40 EDT 2009

On Jun 22, 2009, at 8:09 PM, Matthias Felleisen wrote:

> Sorry, dir.ss is for beginners. Here is small play-around example:

Forgive me for sticking my nose in, but (afaict) the code that follows  
does not require the dir.ss teachpack, or any other teachpack.  In  
particular, it looks like it's written in the #lang scheme language.   
Apologies if this was already obvious, or if I'm wrong.


> (define d:raw (directory-list)) ;; d:raw is just a name
> (define d:txt (map path->string d:raw))
> (define files-ending-in-tex (filter (lambda (f) (regexp-match ".tex"  
> f)) d:txt))
> (apply + (map file-size files-ending-in-tex))
> And here is an excerpt from a script I wrote yesterday:
> ;; String -> [Listof String]
> ;; retrieve all numbered jpgs in a directory in the order of the  
> numbers they contain
> (define (get-jpgs dir)
>  (parameterize ([current-directory dir])
>    (define d (map path->string (directory-list)))
>    (define e (filter (lambda (f) (regexp-match "\\.jpg$" f)) d))
>    (define f (sort e (lambda (f g)
>                        (define fn (string->number (second (regexp- 
> match "([0-9]+)" f))))
>                        (define gn (string->number (second (regexp- 
> match "([0-9]+)" g))))
>                        (< fn gn))))
>    f))
> ;; I could have passed dir to directory-list in this case. Experiment!
> -- Matthias
> On Jun 22, 2009, at 10:07 PM, John Chandler wrote:
>> There are occasionally little things I like to automate, even just
>> once, because I need to perform the same tedious operation on 25
>> separate files, or something.  And I thought that actually wanting to
>> accomplish something might be a good motivation for learning at least
>> certain aspects of Scheme.  The Teachpack, dir.ss seems to offer
>> what's needed, but when I try to follow the doc for this, I hit an
>> error right away.  It seems quite likely that I am *completely*
>> missing a key concept here, because I was trying to follow slavishly
>> hoping I'd catch on to the underlying principles eventually.  Blind
>> pig, acorn, etc.
>> I added the teachpack, dir.ss, clicked Run, and not a whole lot
>> happened.  I looked at the next step in the doc, and it seemed to  
>> show
>> a number of s-exps right after a ">".  So I typed in the first s-exp,
>> and pressed Return.  I got this:
>>    directory-list: could not open "/.Spotlight-V100/" (Permission
>> denied; errno=13)
>> The same thing happened when I pasted the whole set of s-exps into  
>> the
>> upper window and clicked Run again.
>> As I say, this failure is so complete that I think I must have missed
>> something crucial early on, but I confess I don't have the patience  
>> to
>> run through all the picture-drawing stuff right now, just in case the
>> first lesson contains the answer.  I did skim that lesson and I  
>> didn't
>> find the clue I needed.
>> So, OK, I am clue-challenged, and I hope someone out there has one to
>> toss me.
>> The main thing is, I want to fool with files and directories, get  
>> info
>> on files, e.g., size, remove and add file suffixes, maybe get
>> checksums on files, etc.  I'd like to see how easy or horrible that  
>> is
>> with Scheme.  I thought dir.ss might be the place to start, but at
>> this point, everything I know could be wrong.
>> _________________________________________________
>>  For list-related administrative tasks:
>>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2484 bytes
Desc: not available
URL: <http://lists.racket-lang.org/users/archive/attachments/20090622/f7365338/attachment.p7s>

Posted on the users mailing list.