Contexts for with statement providing temporary directories
Create and return a temporary directory. This has the same behavior as mkdtemp but can be used as a context manager.
Upon exiting the context, the directory and everthing contained in it are removed.
>>> import os >>> with tempdir() as tmpdir: ... fname = os.path.join(tmpdir, 'example_file.txt') ... with open(fname, 'wt') as fobj: ... _ = fobj.write('a string\\n') >>> os.path.exists(tmpdir) False
Create, return, and change directory to a temporary directory
>>> import os >>> my_cwd = os.getcwd() >>> with in_tempdir() as tmpdir: ... _ = open('test.txt', 'wt').write('some text') ... assert os.path.isfile('test.txt') ... assert os.path.isfile(os.path.join(tmpdir, 'test.txt')) >>> os.path.exists(tmpdir) False >>> os.getcwd() == my_cwd True
Change directory to given directory for duration of
Useful when you want to use in_tempdir for the final test, but you are still debugging. For example, you may want to do this in the end:
>>> with in_tempdir() as tmpdir: ... # do something complicated which might break ... pass
But indeed the complicated thing does break, and meanwhile the
in_tempdircontext manager wiped out the directory with the temporary files that you wanted for debugging. So, while debugging, you replace with something like:
>>> with in_dir() as tmpdir: # Use working directory by default ... # do something complicated which might break ... pass
You can then look at the temporary file outputs to debug what is happening, fix, and finally replace