LWN.net Logo

Announcing fileutils, a UNIX inspired file system library

From:  ". clutchski" <clutchski-AT-gmail.com>
To:  python-announce-list-AT-python.org
Subject:  Announcing fileutils, a UNIX inspired file system library
Date:  Sat, 5 Dec 2009 19:55:01 -0500
Message-ID:   <333e3bb50912051655o66caba8bye079b20c5e14f546@mail.gmail.com>
Archive-link:  Article, Thread

Hello!

I am happy to announce the release of
fileutils<http://github.com/clutchski/fileutils>,
a file system library inspired by classic UNIX programs like cp, mkdir and
chmod. It is an attempt to smooth out some of the rough edges in the
standard library's os and shutil modules, and create an intuitive,
convenient way of working with files.

Ok, I am going to stop blathering and let the code speak for itself. Here's
a dummy example that demonstrates what fileutils can do (click
here<http://gist.github.com/249919>for syntax highlighting).

"""
This module demonstrates the functionality
of the fileutils library.

http://github.com/clutchski/fileutils
"""

import fileutils

#
# Let's make some directories.
#

# You can create directories one at a time.
fileutils.mkdir('animals')

# Or many at a time, if you want.
fileutils.mkdir(['animals/birds', 'animals/reptiles'])

# Missing parent directories can be created as well.
fileutils.mkdir_p('animals/mammals/ungulates')

# Too lazy to check if a directory exists?
# Don't worry, like the *nix implementation,
# fileutils' mkdir_p is idempotent.
fileutils.mkdir_p('animals/mammals/ungulates')

#
# Let's mess around with some files.
#

# Let's create some.
fileutils.touch('animals/birds/loon')
fileutils.touch(
    ['animals/reptiles/turtle', 'animals/reptiles/elk'])
fileutils.touch('animals/mammals/baaji_river_dolphin')

# Whoops, an elk isn't a reptile.
# Let's move that where it belongs.
fileutils.mv('animals/reptiles/elk', 'animals/mammals/ungulates')

# It's too sad to think about extinct animals, so
# let's pretend they never existed.
fileutils.rm('animals/mammals/baaji_river_dolphin')

# Want anyone to be able to execute your elk?
# Well, go ahead and change the permissions.
fileutils.chmod('0755', 'animals/mammals/ungulates/elk')

# Let's change the ownership of some files.
fileutils.chown('apache', 'apache', 'animals/reptiles/turtle')
fileutils.chown_R('apache', 'apache', 'animals/mammals')

#
# Let's clean up and head home.
#

fileutils.rm_rf('animals')

That's it! It's on PyPi, so you can install with "sudo easy_install
fileutils". Check out the source code
here<http://github.com/clutchski/fileutils.>;.
And
here<http://clutchski.tumblr.com/post/267431466/fileutils-a-un...>is
a blog post detailing the library's motivation and inspiration. And as
always, if anyone has any suggestions, thoughts or comments, it'd be great
to hear from you.

Thanks and take care,
Matt

http://clutchski.tumblr.com/
http://github.com/clutchski
-- 
http://mail.python.org/mailman/listinfo/python-announce-list

        Support the Python Software Foundation:
        http://www.python.org/psf/donations/



(Log in to post comments)

Announcing fileutils, a UNIX inspired file system library

Posted Dec 15, 2009 23:13 UTC (Tue) by nix (subscriber, #2304) [Link]

Gosh that's a good name to choose. Nobody will confuse this with the (long-merged-with-coreutils) GNU fileutils project at *all*. It's not as if GNU fileutils/coreutils has any users anyway, so how could any confusion arise?

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds