关于python:如何指示脚本的当前目录而不是我?

How to indicate the current directory of the script not me?

本问题已经有最佳答案,请猛点这里访问。

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

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

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

是否有方法指示脚本在其位置目录中查找,而不是从中启动它的目录?


__file__是脚本的路径,尽管通常是相对路径。用途:

1
2
3
import os.path

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

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

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


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

1
2
3
import pkg_resources

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