在Python中,我可以使用哪些命令来查找:
答案 0 :(得分:2828)
要获取包含Python文件的目录的完整路径,请将其写入该文件:
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
(请注意,如果您已使用os.chdir()
更改当前工作目录,则上述咒语将无效,因为__file__
常量的值相对于当前工作目录而言os.chdir()
来电不会更改。)
要获取当前工作目录
import os
cwd = os.getcwd()
上面使用的模块,常量和函数的文档参考:
os
和os.path
模块。__file__
常数os.path.realpath(path)
(返回“指定文件名的规范路径,消除路径中遇到的任何符号链接”)os.path.dirname(path)
(返回“路径名path
的目录名”)os.getcwd()
(返回“表示当前工作目录的字符串”)os.chdir(path)
(“将当前工作目录更改为path
”)答案 1 :(得分:299)
当前工作目录:os.getcwd()
__file__
attribute可以帮助您找出正在执行的文件所在的位置。这篇SO帖子解释了一切:How do I get the path of the current executed file in Python?
答案 2 :(得分:250)
您可能会发现这有用作为参考:
import os
print("Path at terminal when executing this file")
print(os.getcwd() + "\n")
print("This file path, relative to os.getcwd()")
print(__file__ + "\n")
print("This file full path (following symlinks)")
full_path = os.path.realpath(__file__)
print(full_path + "\n")
print("This file directory and name")
path, filename = os.path.split(full_path)
print(path + ' --> ' + filename + "\n")
print("This file directory only")
print(os.path.dirname(full_path))
答案 3 :(得分:55)
1.获取当前目录的完整路径
>>import os
>>print os.getcwd()
o / p:“C:\ Users \ admin \ myfolder”
1.单独获取当前目录文件夹名称
>>import os
>>str1=os.getcwd()
>>str2=str1.split('\\')
>>n=len(str2)
>>print str2[n-1]
O / P: “MyFolder文件”
答案 4 :(得分:47)
pathlib
)中的introduced模块PEP 428 — The pathlib module — object-oriented filesystem paths使路径相关体验更加出色。
$ pwd
/home/skovorodkin/stack
$ tree
.
└── scripts
├── 1.py
└── 2.py
为了获取当前工作目录Path.cwd()
:
from pathlib import Path
print(Path.cwd()) # /home/skovorodkin/stack
要获取脚本文件的绝对路径,请使用Path.resolve()
方法:
print(Path(__file__).resolve()) # /home/skovorodkin/stack/scripts/1.py
要获取脚本所在目录的路径,请访问.parent
(建议在.resolve()
之前致电.parent
):
print(Path(__file__).resolve().parent) # /home/skovorodkin/stack/scripts
请注意__file__
在某些情况下不可靠:How do I get the path of the current executed file in Python?。
请注意,Path.cwd()
,Path.resolve()
和其他Path
方法返回路径对象(在我的情况下为PosixPath
),而不是字符串。在Python 3.4和3.5中引起了一些痛苦,因为open
内置函数只能用于字符串或字节对象,并且不支持Path
个对象,所以你必须转换Path
对象到字符串或使用Path.open()
方法,但后一个选项要求您更改旧代码:
$ cat scripts/2.py
from pathlib import Path
p = Path(__file__).resolve()
with p.open() as f: pass
with open(str(p)) as f: pass
with open(p) as f: pass
print('OK')
$ python3.5 scripts/2.py
Traceback (most recent call last):
File "scripts/2.py", line 11, in <module>
with open(p) as f:
TypeError: invalid file: PosixPath('/home/skovorodkin/stack/scripts/2.py')
正如您所看到的,open(p)
不适用于Python 3.5。
PEP 519 — Adding a file system path protocol将PathLike
个对象的支持添加到open
函数,所以现在可以将Path
个对象直接传递给open
函数:
$ python3.6 scripts/2.py
OK
答案 5 :(得分:37)
如果您要查找当前所在文件的当前目录:
OS不可知的方式:
dirname, filename = os.path.split(os.path.abspath(__file__))
答案 6 :(得分:29)
如果你使用的是Python 3.4,那么有一个全新的更高级pathlib
模块,它允许你方便地调用pathlib.Path.cwd()
来获得一个表示你当前工作目录的Path
对象,以及许多其他新功能。
可以找到有关此新API的更多信息here。
答案 7 :(得分:27)
派对有点晚了,但我认为找到当前执行上下文名称的最简洁方法是
current_folder_path, current_folder_name = os.path.split(os.getcwd())
答案 8 :(得分:27)
回答#1:
如果您需要当前目录,请执行以下操作:
import os
os.getcwd()
如果您只想要任何文件夹名称,并且您拥有该文件夹的路径,请执行以下操作:
def get_folder_name(folder):
'''
Returns the folder name, given a full folder path
'''
return folder.split(os.sep)[-1]
回答#2:
import os
print os.path.abspath(__file__)
答案 9 :(得分:17)
获取当前目录的完整路径:
os.path.realpath(&#39;&#39)
答案 10 :(得分:17)
可以通过这种方式使用Pathlib来获取包含当前脚本的目录:
import pathlib
filepath = pathlib.Path(__file__).resolve().parent
答案 11 :(得分:16)
如果您要搜索当前执行脚本的位置,可以使用sys.argv[0]
获取完整路径。
答案 12 :(得分:7)
对于问题1,请使用os.getcwd() # get working dir
和os.chdir(r'D:\Steam\steamapps\common') # set working dir
我建议在问题2中使用sys.argv[0]
,因为sys.argv
是不可变的,因此始终返回当前文件(模块对象路径)并且不受os.chdir()
的影响。你也可以这样做:
import os
this_py_file = os.path.realpath(__file__)
# vvv Below comes your code vvv #
但是该片段和sys.argv[0]
在PyInstaller编译时无法正常工作或者工作效果很差,因为魔术属性未在__main__
级别设置,而sys.argv[0]
是你的exe被调用的方式(意味着它会受到工作目录的影响。)
答案 13 :(得分:5)
在python中获取工作目录。您可以使用以下代码:
import os
cwd = os.getcwd() #to get current working directory
print(cwd)