I am happy to announce the release of fileutilshttp://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 herehttp://gist.github.com/249919for syntax highlighting).
""" This module demonstrates the functionality of the fileutils library.
# # 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. #
That's it! It's on PyPi, so you can install with "sudo easy_install fileutils". Check out the source code herehttp://github.com/clutchski/fileutils.. And herehttp://clutchski.tumblr.com/post/267431466/fileutils-a-unix-inspired-file-system-library-foris 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