Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中,引用与运行文件位于同一目录中的文件_Python_File_Reference_Sys - Fatal编程技术网

Python中,引用与运行文件位于同一目录中的文件

Python中,引用与运行文件位于同一目录中的文件,python,file,reference,sys,Python,File,Reference,Sys,如果我有一个名为example.py的Python文件,上面写着,其中open('%s/data.csv'%sys.path[0])作为var_name:,data.csv与example.py位于同一目录中,那么如果我从终端运行example.py,它可以正常工作,但使用unittest时它不起作用。我的理解是,当从终端运行它时,sys.path[0]为我提供了正在运行的文件的路径(example.py),因此如果data.csv和example.py位于同一目录中,sys.path[0]/d

如果我有一个名为example.py的Python文件,上面写着
,其中open('%s/data.csv'%sys.path[0])作为var_name:
,data.csv与example.py位于同一目录中,那么如果我从终端运行example.py,它可以正常工作,但使用unittest时它不起作用。我的理解是,当从终端运行它时,sys.path[0]为我提供了正在运行的文件的路径(example.py),因此如果data.csv和example.py位于同一目录中,sys.path[0]/data.csv将正确地找到data.csv。但当unittest运行时,无论出于何种幕后原因,sys.path[0]为空,并且未正确找到/data.csv

所以我想知道一个好的策略(也许还有一些明确的代码:)是什么,使这个引用无论在什么情况下都能正常工作(我猜没有sys.path[0],但如果有可以使用的东西,我就使用它)

我还应该提到,我使用的是OS X 10.9.3,使用的是python 2.7

只是一个猜测,但请尝试一下

with open('%s/data.csv' % os.path.dirname(__file__)) as ...
甚至可能更喜欢

 file_path = os.path.join(os.path.dirname(__file__),"data.csv")