繁体   English   中英

Python os模块在当前目录上打开文件,具有相对路径

[英]Python os module open file above current directory with relative path

OS模块的文档似乎没有关于如何在没有完整路径的情况下打开不在子目录中的文件或脚本运行的当前目录的信息。 我的目录结构如下所示。

/home/matt/project/dir1/cgi-bin/script.py
/home/matt/project/fileIwantToOpen.txt

open("../../fileIwantToOpen.txt","r")

提供文件未找到错误。 但是如果我在cgi-bin目录中启动一个python解释器并尝试open("../../fileIwantToOpen.txt","r")它可以工作。 出于明显的可移植性原因,我不想在完整路径中进行硬编码。 有一组的OS模块的方法可以做到这一点?

open的路径应该相对于当前工作目录,即运行脚本的目录。 所以上面的例子只有从cgi-bin目录运行它才有效。

一个简单的解决方案是使您的路径相对于脚本。 一种可能的解决方

from os import path

basepath = path.dirname(__file__)
filepath = path.abspath(path.join(basepath, "..", "..", "fileIwantToOpen.txt"))
f = open(filepath, "r")

这样,您将获得正在运行的脚本的路径(basepath),并将其与要打开的文件的相对路径连接起来。 os.path将负责加入这两条路径的细节。

这应该会将您移动到脚本所在的目录中,如果您还没有:

file_path = os.path.dirname(__file__)
if file_path != "":
    os.chdir(file_path)
open("../../fileIwantToOpen.txt","r")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM