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


Download files

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

Source Distribution

temps-0.3.0.tar.gz (4.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page