2010-08-07 144 views
417

我想获取当前文件的目录路径。
我想:如何在Python中获取当前文件目录的完整路径?

>>> os.path.abspath(__file__) 
'C:\\python27\\test.py' 

但我怎么能检索目录的路径? 例如:

'C:\\python27\\' 
+3

可能重复://计算器.com/questions/5137497/find-current-directory-and-files-directory) – user2284570 2014-05-23 15:01:10

+4

当您将python作为交互式shell运行时,未定义'__file__'。你的问题中的第一段代码看起来像是来自交互式shell,但实际上会产生一个'NameError',至少在python 2.7.3上,但我猜也是如此。 – drevicko 2015-05-31 01:04:44

回答

889

如果你的意思是运行脚本的目录:

import os 
os.path.dirname(os.path.abspath(__file__)) 

如果你指的是当前的工作目录:

import os 
os.getcwd() 

注意,之前和file后是两个下划线,而不仅仅是一个。

+29

如果您不想在Windows上发现奇怪的行为,那么abspath()是强制性的,其中dirname(__ file__)可能会返回空字符串! – sorin 2011-10-25 10:10:20

+4

应该是os.path.dirname(os.path.abspath(os .__ file__))? – DrBailey 2014-03-27 12:28:18

+1

@drbailey:没有。是什么让你认为它应该? – 2014-03-27 12:48:21

7
import os 
print os.path.dirname(__file__) 
+18

对不起但这个答案是不正确的,正确的是Bryan'dirname(abspath(__ file__))所做的。详情请参阅评论。 – sorin 2011-10-25 10:11:26

+1

它会给出'/'作为输出 – Tripathi29 2015-09-24 06:31:58

4

您可以轻松地使用osos.path库如下从当前

import os 
os.chdir(os.path.dirname(os.getcwd())) 

os.path.dirname返回上一级目录。 它可以让我们在不传递任何文件参数且不知道绝对路径的情况下更改为较高级别。

+4

这不会给出当前_file_的目录。它返回当前工作目录的完全不同的目录。只有当文件位于当前工作目录中时,您的建议才有效。 – 2016-07-01 19:34:12

0

IPython有一个神奇的命令%pwd来获取当前的工作目录。它可以下列方式使用:

from IPython.terminal.embed import InteractiveShellEmbed 

ip_shell = InteractiveShellEmbed() 

present_working_directory = ip_shell.magic("%pwd") 

在IPython的Jupyter笔记本%pwd可以直接使用如下:

present_working_directory = %pwd 
的[查找当前目录和文件的目录(HTTP
相关问题