Keyadun
Keyadun

Reputation: 915

Is it possible to get the path of a tempfile in Python 3

I was wondering if it was possible to get the file path of a temporary file made using the tempfile library. Basically, I'm trying to make a function that intakes some data, and generates a temporary csv file based off of said data. I was wondering if there was a way to get the path of this temporary file?

Upvotes: 72

Views: 85088

Answers (4)

Eli Halych
Eli Halych

Reputation: 635

This works just fine to get the full path with the filename

file = tempfile.NamedTemporaryFile()
filename = file.name

The output:

/tmp/tmp_sl4v9ps

Upvotes: 12

Papageno
Papageno

Reputation: 334

Anyway, if you need the path of the tempfile directory you can use tempfile.gettempdir()

Upvotes: 2

hd1
hd1

Reputation: 34677

tempfile.NamedTemporaryFile has a .dir property which will give you want you want.


EDIT: No, it is not .name, @Barmar, but looking through the source code for tempfile, I don't see a .dir property either. However, you can use the .name property in conjunction with os.path's dirname method as follows:

with tempfile.NamedTemporaryFile(suffix='.csv', prefix=os.path.basename(__file__)) as tf:
    tf_directory = os.path.dirname(tf.name)

Upvotes: 7

Barmar
Barmar

Reputation: 782693

Use tempfile.NamedTemporaryFile to create a temporary file with a name, and then use the .name attribute of the object.

Note that there are platform-specific limitations on how this name can be used. The documentation says:

Whether the name can be used to open the file a second time, while the named temporary file is still open, varies across platforms (it can be so used on Unix; it cannot on Windows NT or later).

Upvotes: 86

Related Questions