Skip to main content

Context managers for creating and cleaning up temporary directories and files.

Project description

## Introduction

`temps` is a python module containing context managers for creating and
cleaning up temporary files and directories.

This package is _alpha_ and its API is not stable.

Why do I never use the `tempfile` module?

- I am responsible for removing files and dirs tempfile creates, which creates
lots of boilerplate whenever I use it.
- There is no context manager for temp dirs.
- When using `mkstemp()`, I get an open file descriptor, not a file object,
that I have to close.
- The context manager for temp files contains statements like this
from the tempfile docs: "Whether the name can be used to open the file a
second time, while the named temporary file is still open, varies across
platforms"
- I do not get to choose the file perms of files and dirs I create.

What do I like about this module?

- It has a context manager for creating a temp dir and another for temp files.
- The context manager cleans up the dir or file upon context exit, not upon file
closure.
- No ambiguity about whether you can or cannot open a file twice.
- You can set the permissions of the temp file or dir to what you want.
- It is very clear what the implementation is:
- directories are created and the path is returned.
- files are not created, since you'll want to do that in a `with
open(filename) ...` statement, and the path is returned.
- directories and files are cleaned up by the context managers.
- file and dir names are generated using the uuid module, which presumably
will avoid race conditions.


## Contribute

Feel free to make a pull request on github.


## Requirements

- Probably Python 2.7 (since that is the only version it has been tested with.)


## Installation


### Install from pypi.python.org

Download and install using pip:

pip install temps


### Install from github.com

Using github, one can clone and install a specific version of the package:

cd ~
git clone git@github.com:todddeluca/temps.git
cd temps
python setup.py install


## Usage

Creating a working dir for subprocesses:

with temps.tmpdir() as workdir:
with open(os.path.join(workdir, 'datafile'), 'wb') as fh:
fh.write(data)
subprocess.call('compute.sh {}'.format(workdir), shell=True)
with open(os.path.join(workdir, 'outfile')) as fh:
print fh.read()

Creating a temp file for a transform and upload:

with temps.tmpfile() as transformed_path:
transform(input_path, transformed_path)
upload(transformed_path, destination)

The default values when parameters are not specified, are stored in variables
that are set using environment variables if available or a default value
otherwise. Here is a table listing the variable, the environment variable
checked, and the default value:

Variable, ENV_VAR, Default
TEMPS_DIR, TEMPS_DIR, tempfile.gettempdir()
TEMPS_PREFIX, TEMPS_PREFIX, ''
TEMPS_SUFFIX, TEMPS_SUFFIX, ''
TEMPS_MODE, TEMPS_MODE, '0777'

Project details


Release history Release notifications

This version
History Node

0.3.0

History Node

0.2.0

History Node

0.1.0

History Node

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
temps-0.3.0.tar.gz (4.8 kB) Copy SHA256 hash SHA256 Source None Sep 25, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page