2013-07-12 2 views
0

У меня есть функция, которая загружает данные, используя текущий путь следующим образом: open('./filename', 'rb'). Когда я вызываю его из модуля, расположенного в том же пакете, он работает, но когда я импортирую его пакет из модуля в другой пакет и вызываю его, я получаю сообщение об ошибке, указывающее, что путь './filename' не существует. Ошибка вызвана вызовом open. Что вызывает это, и как я могу это исправить?Как вызвать функцию Python, которая использует IO из другого пакета

ответ

2

Я не знаю лучших практик, но модули имеют атрибут __file__, заданный строковым представлением имени файла, из которого они были загружены. Таким образом, вы можете сделать это:

import os.path 

# Get the directory this module is being loaded from 
module_directory = os.path.dirname(__file__) 

# Get the path to the file we want to open 
file_path = os.path.join(module_directory, 'filename') 

with open(file_path, 'rb') as f: 
    # do what you want with the file 
+0

Спасибо, это работает. – user1123936

Смежные вопросы