2016-09-06 7 views
0

dictionaryのモジュールdict.pyにある関数is_english_wordを呼び出そうとしています。ここでは階層は次のとおりです。モジュールと同じディレクトリにあるファイルを開くモジュールをインポートするにはどうすればよいですか?

DataCleaning 
|___ text_cleaner.py 
|___ dictionary 
    |___ dict.py 
    |___ list_of_english_words.txt 

明確にするために、私はdictionaryと呼ばれる1つのパッケージにdict.pylist_of_english_words.txtを持っています。ここで

text_cleaner.pyで書かれたimport文です:

import DataCleaning.dictionary.dict as dictionary

と、ここdict.pyで書かれたコードは次のとおりです。

import os 

with open(os.path.join(os.path.dirname(os.path.realpath('__file__')), 'list_of_english_words.txt')) as word_file: 
    english_words = set(word.strip().lower() for word in word_file) 


def is_english_word(word): 
    return word.lower() in english_words 

しかし、私はtext_cleaner.pyファイルを実行すると、それは示していlist_of_english_words.txtをインポートできません:

Traceback (most recent call last): 
    File "E:/Analytics Practice/Social Media Analytics/analyticsPlatform/DataCleaning/text_cleaner.py", line 1, in <module> 
    import DataCleaning.dictionary.dict as dictionary 
    File "E:\Analytics Practice\Social Media Analytics\analyticsPlatform\DataCleaning\dictionary\dict.py", line 3, in <module> 
    with open(os.path.join(os.path.dirname(os.path.realpath('__file__')), 'list_of_english_words.txt')) as word_file: 
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\Analytics Practice\\Social Media Analytics\\analyticsPlatform\\DataCleaning\\list_of_english_words.txt' 

しかし、dict.pyコード自体を実行すると、エラーは表示されません。私は明らかにos.path.dirname(os.path.realpath('__file__'))text_cleaner.pyのディレクトリを指し、dict.pyではないことが分かります。モジュールdict.pyのインポートをどこから呼び出すのかを独立させる方法を教えてください。

+2

はos.path.realpath 'に' os.path.realpath( '__ __ファイルを') 'に変更してください(__ __ FILE)'。 – Bakuriu

+0

作品!間違いを指摘してくれてありがとう。 –

答えて

2

問題は、文字列'__file__'__file__の代わりにos.path.realpathに渡すことです。

変更:

os.path.realpath('__file__') 

にするには:

os.path.realpath(__file__) 
関連する問題