2011-01-07 15 views
0

:私は、これは現存するファイルの名前で呼び出すとPythonのosモジュールのパス機能のドキュメントから

os.path.realpath(path) 
Return the canonical path of the specified filename, eliminating any 
symbolic links encountered in the path (if they are supported by the 
operating system). 

、私はそれへのパスを取得する:/home/myhome/myproject

私はこれを 'nonsense.xxx'文字列引数で呼び出すと、まだパスが/home/myhome/myproject/nonsense.xxxになります。 nonsense.xxxはファイルではなくディレクトリであると見なされるため、これは少し矛盾しています(どちらも存在しませんが、存在しません)。

これをヌル文字列ファイル名で呼び出すと、まだパスは/home/myhome/myprojectになります。

ドキュメントでrealpath()について少ししか言及していない場合のこの動作についてはどうすれば説明できますか? (私はPython 2.5を使用しています)

編集:誰かがファイルが存在するかどうかをテストする方法を提案しました。私の懸念は、ファイルが存在するかどうかをテストすることではない。私の懸念は行動を説明することです。

答えて

2

os.pathはファイルが存在するかどうかには関心がありません。それは単にパスを構築することに関係しています。

realpathは方程式から既知のシンボリックリンクを削除しますが、存在しないディレクトリはパスの有効な要素とはみなされません。

+1

os.path docには、「このモジュールはパス名にいくつかの便利な機能を実装しています。 os.path.realpath()は、あなたが送信するガベージに関係なく、パスを返すとは言いません。しかし、それはそうであるようです。 – H2ONaCl

+0

@broiyan:もしあなたが無言の人物であると仮定すれば、あなたの期待はもっと心苦しくなるでしょう。 –

+0

pathnamesは、それが存在するファイルへのパスであることを意味しません。ちょうどそれは有効なパスです。 – richo

0

呼び出しの前に、 "os.path.isfile(x)"、 "x is None"、 "os.path.isdir(x)"などのテストを行いますか?

2

推測ではなく、コードを読んでください!それはあなたのpythonインストールにあります。またはhereをブラウズすると、それはわずか14行マイナスコメントです。

関連する問題