52

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.

Benjamin
  • 11,560
  • 13
  • 70
  • 119

2 Answers2

101

This doesn't work for you?

In [2]: tempfile.NamedTemporaryFile(suffix='.tif').name
Out[2]: '/var/folders/gq/swc6jtld5853skyq_xc2lpc40000gn/T/tmplrtwvxg7.tif'
Wayne Werner
  • 49,299
  • 29
  • 200
  • 290
2

did you try?

fd, path =tempfile.mkstemp(suffix = '.tif')
print(path)
ismail
  • 29
  • 2