我有一个python脚本,它从一个应该在脚本的同一目录中的文件中读取一些输入:
with open('./input1.txt') as file:
F = file.readlines()
Do_Stuff(F)
我通常从其他目录运行脚本(不是脚本和输入文件所在的目录),因此它引发了一个无法找到输入文件的IOError(因为它不在我当前的工作目录中)。我不喜欢为输入文件设置完整路径,因为我希望它是可移植的 - 只有脚本和输入文件都必须在同一目录中。
有没有办法指示脚本查看其位置目录而不是我从中启动它的目录?
答案 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')