如何指出脚本的当前目录不是我?

时间:2013-03-18 10:34:01

标签: python directory

我有一个python脚本,它从一个应该在脚本的同一目录中的文件中读取一些输入:

with open('./input1.txt') as file:
    F = file.readlines()
Do_Stuff(F)

我通常从其他目录运行脚本(不是脚本和输入文件所在的目录),因此它引发了一个无法找到输入文件的IOError(因为它不在我当前的工作目录中)。我不喜欢为输入文件设置完整路径,因为我希望它是可移植的 - 只有脚本和输入文件都必须在同一目录中。

有没有办法指示脚本查看其位置目录而不是我从中启动它的目录?

2 个答案:

答案 0 :(得分:3)

__file__是脚本的路径,虽然通常是相对路径。使用:

import os.path

scriptdir = os.path.dirname(os.path.abspath(__file__))

创建目录的绝对路径,然后使用os.path.join()打开文件:

with open(os.path.join(scriptdir, './input1.txt')) as openfile:

答案 1 :(得分:0)

如果安装了setuptools / distribute;您可以使用pkg_resources functions来访问文件:

import pkg_resources

data = pkg_resources.resource_string(__name__, 'input1.txt')