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はディスク上のファイルのパスを返しますが、2 番目の呼び出しは返しません。の後にディスクファイルのパスを取得する方法はありますchdirか? 理想的には、ファイル オブジェクトを自分で作成しなくても機能する一般的な回答が必要です。

これには実際のユースケースはありません。ただ興味があります。

4

2 に答える 2

1

...ファイルオブジェクトを自分で作成すると機能します。しかし、私がしなかった場合はどうなりますか?関数で受け取った場合はどうなりますか? より一般的な回答を希望します(それを反映するように質問を編集しました)。

フル パスが Python 内部のどこかに保存される可能性は低いと思いますが、ファイル記述子に基づいて OS にパスを問い合わせることができます。

これは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 に答える
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 に答える