2017-06-22 16 views
1

を見つけない:Pythonパスは、私がこのような構造で、私のPythonコードを持っているテキストファイル

import sys 
sys.path.insert(0, '../') 
#other code 

foo.pyは含まれています:

print "about to read file" 
file = open("somefile.txt", "r") 
print file.read() 
print "done reading" 

folder: 
    Procfile 
    folder2: 
     myprog.py 
     foo.py 
     somefile.txt 

Procfileは含まれていweb: python folder2/myprog.py

myprog.pyが含まれています

ファイルを読み取ることができません。

file = open(os.path.join(os.path.dirname(__file__), "somefile.txt"), "r") 

sys.pathのみ決定されます。それはあなたが自動モジュール変数__file__を利用することができますし、somefile.txtを知っているという事実がfoo.pyと同じディレクトリにあるabout to read file

+0

エラーが発生しますか? 'sys.path.insert( '..')'はモジュールパス検索( 'import xyz')'を追加するためのトリックです。通常のファイルを開くためのものではありません。 – Anthon

+0

'try/catch'でそれを囲んだ後に、' I/Oエラー(2):このようなファイルやディレクトリがありません。 'というメッセージが表示されます。 – Anthony

+0

ファイルを開こうと思うところでファイルを開こうとしません。 'print os.getcwd()'を試してください(その前に 'import os'という行があることを確認してください)。私の推測では 'file = open(" folder2/somefile.txt ")' – Anthon

答えて

2

を印刷し本家のコードがdone reading部分に到達したことはありませんファイルシステムから汎用ファイルを開く場所ではなく、モジュールをインポートするための検索パス。

+0

を実行する必要があります。もう一つの小さなバリエーションは 'file = open(os.getcwd()、 'folder2'、 'somefile .txt ')、' r ') '。 'os.getcwd()'は、Cloud Foundryがあなたのプロジェクトのルートになる現在の作業ディレクトリを返します(あなたがこれをあなたのProcfileで特別に変更しない限り)。 –

関連する問題