4

在 Python 2 中,是否可以在 ? 之后获取文件对象的真实路径os.chdir()?考虑:

$ python
>>> f = file('abc', 'w')
>>> f.name
'abc'
>>> from os import path
>>> path.realpath(f.name)
'/home/username/src/python/abc'
>>> os.chdir('..')
>>> path.realpath(f.name)
'/home/username/src/abc'

第一次调用realpath返回磁盘上文件的路径,但第二次没有。有什么办法可以得到磁盘文件的路径chdir吗?理想情况下,我想要一个通用的答案,即使我自己没有创建文件对象也能工作。

我没有任何实际用例,我只是好奇。

4

2 回答 2

1

当然

f=file(os.path.join(os.getcwd(),"fname"),"w")

print f.name

只要你在初始化的时候使用绝对路径

正如 Martijn Pieters 指出的那样,您也可以这样做

f=file(os.path.abspath('fname'),"w")  #or os.path.realpath , etc

print f.name
于 2013-05-21T16:35:28.413 回答
1

...如果我自己创建文件对象,那就行得通。但如果我没有呢?如果我在函数中收到它怎么办?我更喜欢更一般的答案(我已经编辑了问题以反映这一点)。

我认为完整路径不太可能存储在 Python 内部的任何位置,但您可以根据文件描述符向操作系统询问路径。

这应该适用于Linux ...

>>> import os
>>> os.chdir('/tmp')
>>> f = open('foo', 'w')
>>> os.chdir('/')
>>> os.readlink('/proc/%d/fd/%d' % (os.getpid(), f.fileno()))
'/tmp/foo'

不确定Windows。

于 2013-05-21T17:27:49.213 回答