2015-11-09 3 views
1

Моя программа имеет следующую структуру:Append путь к программе питона

|---main.py 
|---home 
     |----read.csv 
     |----importer.py 

main.py имеет следующий код:

from home import importer as imp 
imp.load() 

importer.py имеет следующий код:

import pandas as pd 
import sys 


def load(): 
    arch = pd.read_csv("read.csv") 
    print arch 


if __name__ == '__main__': 
    load() 

и read.csv - любое csv, это, например,

h,k 
3,4 
5,6 

Когда я запустил importer.py, он работает нормально, и это потому, что read.csv находится в текущем пути.

Но когда я пытаюсь запустить main.py, он выдает исключение, потому что он не может найти read.csv. Это потому, что read.csv не находится в текущем пути.

Мне нужно, чтобы он работал в обоих режимах, и решение было бы добавить домашний путь к основной программе python.

Я попытался сделать это sys.path.append (os.path.join (os.getcwd(), "home")) , но он не работал.

Любая идея?

+1

вы должны использовать абсолютные пути не относительные пути. я предлагаю, чтобы «load» принимал параметр пути и каждый раз проходил абсолютный путь. –

+0

У вас есть '__init __. Py' в вашем домашнем каталоге? – DataHerder

+0

Да, у меня __init__.py в доме –

ответ

1

Это работает

def load(): 
    filedir, _ = os.path.split(__file__) 
    arch = pd.read_csv(os.path.join(filedir, 'read.csv')) 
    print arch 
+0

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

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