2016-09-06 5 views
2

/tmp/myfolder/myscript /からスクリプトを実行し、myfolderのリソースにアクセスしたい場合は、どうすればよいですか?スクリプトのパスの上にあるリソースにPythonにアクセスするように指示します

私は__file__でファイルのパスを取得しましたが(常に入力されるわけではないため、使用しないように言われました)、私はbashのようにはできません。これはPythonがそれを理解していないためです。

私はpythonスクリプトを実行したいと思います。フォルダがどこにあっても、常に1つ上のレベルになり、必要なリソースを取得します。

+1

私はあなたがあなたのケースに移入されます__file__' 'かなり確認することができると思いますこれは、for . import module使用することができます。したがって、 'os.path.join(os.path.dirname(__ file__)、 '..')'は親ディレクトリを取得するための最良の方法です – zvone

答えて

0

Pythonはcdos.chdir()を理解しています。私はあなたがやろうとしている正確に何かわからないが、あなたは試すことができます:

import os 
os.chdir('..') 

これは(ちょうどcd ..のような)現在の1以上のものにあなたの作業ディレクトリを変更します。

パスを使用する多くの操作では、..を使用することもできます。たとえば、1つのディレクトリの上にあるファイルを開く場合は、open('../myfile.txt')などです。目標が何であるかによって、this questionの回答も役立ちます。

+1

まさに私が探していたものです。アセットが親フォルダにある間に、私のプロジェクトのサブディレクトリで実行されるスクリプトを持っているので、その要素にアクセスするためには、私は1レベル上に移動する必要があります。これにより私はcwdを変更することができ、資産にアクセスできます。ありがとう! –

+0

私はまだCWDよりむしろ '__file__'を使用します。現在の作業ディレクトリは本当にスクリプトの場所である必要はありません。たとえば、 'python dirname/script.py'を実行すると、CWDはスクリプトから1レベル上になります。 – zvone

0

あなたが話していることについてはっきりしていませんが、私はあなたがパッケージ内参照について話していると推測しています。 hereについて詳しく読むことができますが、別のパッケージからモジュールをインポートしようとすると、一般的な考え方はfrom .. import moduleです。

この文の..は、コンパイラに1レベル上に移動して、moduleという名前のモジュールを検索するように指示します。また、現在のディレクトリから モジュールnameをインポートし、from ../folder import module

関連する問題