2015-11-09 34 views
1

我的程序有一个结构:追加路径的Python程序

|---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

我认为你必须指定完整的路径。它可以工作,但我希望能够添加此路径,以便您始终可以访问家中的每个文件。 –