【发布时间】:2011-11-02 04:55:28
【问题描述】:
假设我的python代码在一个名为main的目录中执行,应用程序需要访问main/2091/data.txt。
我应该如何使用open(location)?参数location应该是什么?
我发现下面的简单代码可以工作..它有什么缺点吗?
file = "\2091\sample.txt"
path = os.getcwd()+file
fp = open(path, 'r+');
【问题讨论】:
-
您正在使用未转义的反斜杠。这是一个缺点。
-
几个缺点。 1)根据@orip,对路径使用正斜杠,即使在Windows上也是如此。你的字符串不起作用。或者使用像
r"\2091\sample.txt"这样的原始字符串。或者像"\\2091\\sample.txt"一样逃避它们(但这很烦人)。另外,2)您正在使用 getcwd() ,这是您执行脚本时所在的路径。我以为你想要相对于脚本位置(但现在我想知道)。 3),始终使用os.path函数来操作路径。你的路径加入线应该是os.path.join(os.getcwd(), file)4) ;没有意义 -
为了更好的衡量... 5) 使用上下文保护来保持它的清洁并避免忘记关闭你的文件:
with open(path, 'r+') as fp:。请参阅 here 以获得对我所见过的with语句的最佳解释。 -
除了对斜线的必要注意之外,正如刚才所指出的,还有
os.path.abspath函数可以轻松获取要打开的相对路径的完整路径。最终声明如下所示:os.path.abspath('./2091/sample.txt')
标签: python file path relative-path