Find current directory and file's directory
在python中,我可以使用哪些命令来查找:
要获取包含python文件的目录的完整路径,请将其写入该文件:
1 2 | import os dir_path = os.path.dirname(os.path.realpath(__file__)) |
(注意,如果您已经使用
要获取当前工作目录,请使用
1 2 | 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import os print("Path at terminal when executing this file") print(os.getcwd() +" ") print("This file path, relative to os.getcwd()") print(__file__ +" ") print("This file full path (following symlinks)") full_path = os.path.realpath(__file__) print(full_path +" ") print("This file directory and name") path, filename = os.path.split(full_path) print(path + ' --> ' + filename +" ") print("This file directory only") print(os.path.dirname(full_path)) |
1.获取当前目录的完整路径
1 2 | >>import os >>print os.getcwd() |
O/P:"C:usersadminmyfolder"
1.单独获取当前目录文件夹名称
1 2 3 4 5 | >>import os >>str1=os.getcwd() >>str2=str1.split('\') >>n=len(str2) >>print str2[n-1] |
O/P:"MyF夹"
python 3.4中引入的
1 2 3 4 5 6 7 | $ pwd /home/skovorodkin/stack $ tree . └── scripts ├── 1.py └── 2.py |
要获得当前工作目录,请使用
1 2 3 | from pathlib import Path print(Path.cwd()) # /home/skovorodkin/stack |
要获得脚本文件的绝对路径,请使用
1 | print(Path(__file__).resolve()) # /home/skovorodkin/stack/scripts/1.py |
要获取脚本所在目录的路径,请访问
1 | print(Path(__file__).resolve().parent) # /home/skovorodkin/stack/scripts |
记住,在某些情况下,
请注意,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $ 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') |
如您所见,
PEP 519—添加一个在python 3.6中实现的文件系统路径协议,增加了对
1 2 | $ python3.6 scripts/2.py OK |
如果您试图查找当前所在文件的当前目录:
操作系统不可知方式:
1 | dirname, filename = os.path.split(os.path.abspath(__file__)) |
如果您使用的是python 3.4,那么有一个全新的更高级的
关于这个新API的更多信息可以在这里找到。
对第1题的回答:
如果需要当前目录,请执行以下操作:
1 2 | import os os.getcwd() |
如果只需要任何文件夹名,并且您有该文件夹的路径,请执行以下操作:
1 2 3 4 5 | def get_folder_name(folder): ''' Returns the folder name, given a full folder path ''' return folder.split(os.sep)[-1] |
对第2题的回答:
1 2 | import os print os.path.abspath(__file__) |
参加聚会有点晚,但我认为找到当前执行上下文名称的最简单方法是
1 | current_folder_path, current_folder_name = os.path.split(os.getcwd()) |
pathlib可以用这种方式获取包含当前脚本的目录:
1 2 | import pathlib filepath = pathlib.Path(__file__).resolve().parent |
要获取当前目录的完整路径:
os.path.realpath('.')
如果要搜索当前执行脚本的位置,可以使用
要查看当前工作目录,请键入以下脚本:
1 2 | import os current_working_directory = os.getcwd() |
对于问题1,使用
我建议对问题2使用
1 2 3 4 | import os this_py_file = os.path.realpath(__file__) # vvv Below comes your code vvv # |
但当pyinstaller编译时,该代码段和
在python中获取工作目录。您可以使用以下代码:
1 2 3 | import os cwd = os.getcwd() #to get current working directory print(cwd) |