David542
David542

Reputation: 110093

Get path from open file in Python

If I have an opened file, is there an os call to get the complete path as a string?

f = open('/Users/Desktop/febROSTER2012.xls')

From f, how would I get "/Users/Desktop/febROSTER2012.xls" ?

Upvotes: 171

Views: 168281

Answers (4)

answerSeeker
answerSeeker

Reputation: 2772

You can get it like this also.

filepath = os.path.abspath(f.name)

Upvotes: 10

Zans
Zans

Reputation: 1701

I had the exact same issue. If you are using a relative path os.path.dirname(path) will only return the relative path. os.path.realpath does the trick:

>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)

Upvotes: 159

Ali Raza Bhayani
Ali Raza Bhayani

Reputation: 3145

And if you just want to get the directory name and no need for the filename coming with it, then you can do that in the following conventional way using os Python module.

>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'

This way you can get hold of the directory structure.

Upvotes: 17

Tadeck
Tadeck

Reputation: 137310

The key here is the name attribute of the f object representing the opened file. You get it like that:

>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'

Does it help?

Upvotes: 198

Related Questions