1

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

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

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

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

4

2 回答 2

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:
于 2013-03-18T10:36:00.447 回答
0

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

import pkg_resources

data = pkg_resources.resource_string(__name__, 'input1.txt')
于 2013-03-18T12:47:15.300 回答