2011-10-26 33 views
3

私の質問はタイトルが示唆しているとおりです。私の研究は、このような何かをしようとする私をリードしてきました:Pythonの相対パスからの絶対パスを見つける

import os 
pathname = os.path.abspath("some/relative/directory") 
print pathname 

この問題は、私はこのような何かをするたびに、それは単に私はそれが私のpythonディレクトリが先行した相対的なものは何でもディレクトリを返すということです。例えば:

C:\ Python27 \でも、自分のコンピュータ上の既存のディレクトリではありませんいくつかの\相対\ディレクトリ

。私は、Pythonインタプリタがデフォルトで作業ディレクトリを検索することを理解していますが、私がしたいのは、私が指定した部分的なディレクトリを含む絶対パスのために私のコンピュータ全体を検索させることです。

私の目的は、任意のコンピュータ上の任意のディレクトリを検索できるexe(py2exeを使用)を作成することです。標準ライブラリやいくつかの利用可能なモジュールを使ってこれを行う方法がありますか?あるいは自分でアルゴリズムを実装する必要がありますか?

+1

ハードディスク全体を検索してそのようなパスを探したいのですか?または何? –

答えて

3

abspathは、getcwdに基づいています。ほとんどの場合、あなたの現在の作業ディレクトリは単にあなたが期待するものではありません。

スクリプトを起動するコードを変更したり、ディレクトリを手動で変更したり、Pythonでchdirを使用したりすることができます。

+1

@Ben、abspathはそういうことをしません。そのようなアルゴリズムは、あなたが考えるかもしれないより複雑です。たとえば、どの[ツリートラバーサル]アルゴリズム(http://en.wikipedia.org/wiki/Tree_traversal)アルゴリズムを使用しますか?複数の一致がある場合はどうしますか?また、ファイルシステムが変更された場合はどうなりますか検索? –

+0

hmm、私はPythonにはかなり新しいですが、いくつかのモジュールに既存のアルゴリズムがあることを期待していました... - 見つかった最初の一致を返す単純な手段はありますか? – Ben

+0

@Ben、質問を編集して、削除したコメントに似たものを入力する必要があります。 –

0

os.path.realpath("my/relative/dir")を試しましたか?実際には、ディレクトリは存在しないようですが、そうであれば、シンボリックリンクやその他のものを解決します。

+0

私もこれを試しましたが、それでもC:\ Python27 \ my \ relative \ dir(基本的にはC:\ Python27 +私が渡す文字列を返します) – Ben

関連する問題