Announcing fileutils, a UNIX inspired file system library

. clutchski clutchski at gmail.com
Sun Dec 6 01:55:01 CET 2009


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-unix-inspired-file-system-library-for>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


More information about the Python-announce-list mailing list