基本上我正在寻找一种简单的方法来打开与程序位于同一文件夹内的文件夹中的文本文件。我的目录结构如下所示:
/programfolder/textfiles/textfile
我正在尝试像这样使用 open :
text=functionthatgetsfilename()
file=open("textfiles/"+text,"r")
我究竟做错了什么?我只是在某个地方打错了吗?
基本上我正在寻找一种简单的方法来打开与程序位于同一文件夹内的文件夹中的文本文件。我的目录结构如下所示:
/programfolder/textfiles/textfile
我正在尝试像这样使用 open :
text=functionthatgetsfilename()
file=open("textfiles/"+text,"r")
我究竟做错了什么?我只是在某个地方打错了吗?
您需要知道当前目录和脚本所在目录之间的区别。当前目录是您在命令行(CMD、SH 等)中启动应用程序的目录。你可以用os.path.normpath(os.curdir)
.
为了解决您的问题,您可以使用
file=open(os.path.join(os.path.dirname(__file__),'holdstextfiles',text),'r')
或者
os.chdir(os.path.dirname(__file__))
...
第一个解决方案使用所需文件的绝对路径,无论如何都是一样的:它是绝对的
第二种解决方案在尝试使用您正在使用的相对路径之前更改当前目录。