Temporary file with specific file extension in Python 3

Benjamin picture Benjamin · Aug 11, 2016 · Viewed 10.8k times · Source

I am writing some unit tests for a piece of code that takes a path and attempts to load the file if it has a known extension, then does more careful checking.

In the unit test, I would like to create a temporary file that has the correct extension, but incorrect contents, in my case an empty file posing as test.tif.

How can I create a temporary file while specifying the extension (or the entire name), using the tempfile module?

I have looked at the NamedTemporaryFile class, as well as the suffix and prefix parameters, but I still cannot set the extension. I suppose I could manually create a file in a temporary directory, but then I loose the self-deleting capability that I am after.

Answer

Wayne Werner picture Wayne Werner · Aug 11, 2016

This doesn't work for you?

In [2]: tempfile.NamedTemporaryFile(suffix='.tif').name
Out[2]: '/var/folders/gq/swc6jtld5853skyq_xc2lpc40000gn/T/tmplrtwvxg7.tif'