Answers:
对于正在运行的脚本的目录:
import pathlib
pathlib.Path(__file__).parent.absolute()
对于当前工作目录:
import pathlib
pathlib.Path().absolute()
对于正在运行的脚本的目录:
import os
os.path.dirname(os.path.abspath(__file__))
如果您的意思是当前工作目录:
import os
os.path.abspath(os.getcwd())
请注意,前后分别file
是两个下划线,而不仅仅是一个。
另请注意,如果您正在交互运行或已从文件以外的内容(例如数据库或在线资源)中加载了代码,则__file__
可能不会设置,因为没有“当前文件”的概念。上面的答案假设运行文件中的python脚本的最常见情况。
__file__
(请注意,单词的两边都有两个下划线)是python的标准部分。例如,它在基于C的模块中不可用,但应始终在python脚本中可用。
__file__
如果是从交互式提示运行,则没有。\
使用Path
是因为Python 3的推荐方式:
from pathlib import Path
print("File Path:", Path(__file__).absolute())
print("Directory Path:", Path().absolute())
文档:pathlib
注意:如果使用Jupyter Notebook,__file__
则不会返回期望值,因此Path().absolute()
必须使用。
Path(__file__).parent
是获取包含文件的文件夹
Path(__file__)
可以获取文件。 .parent
使您上一层,即包含目录。您可以添加更多内容.parent
以根据需要增加目录数。
Path().absolute()
位于中的某个模块中存在path/to/module
并且您正在从位于中的某个脚本中调用该模块,path/to/script
则它将返回path/to/script
而不是path/to/module
Path(__file__).cwd()
更明确
Path(__file__)
并不总是起作用,例如,在Jupyter Notebook中不起作用。 Path().absolute()
解决了这个问题。
在Python 3.x中,我这样做:
from pathlib import Path
path = Path(__file__).parent.absolute()
说明:
Path(__file__)
是当前文件的路径。.parent
为您提供文件所在的目录。.absolute()
给您完整的绝对路径。使用pathlib
是使用路径的现代方法。如果以后由于某种原因需要它作为字符串,只需执行str(path)
。
.open()
例如Path
with Path(__file__).parent.joinpath('some_file.txt').open() as f:
import os
print os.path.dirname(__file__)
/
作为输出给出
您可以轻松地使用os
和存储os.path
库,如下所示
import os
os.chdir(os.path.dirname(os.getcwd()))
os.path.dirname
从当前目录返回上一级目录。它使我们可以在不传递任何文件参数且不知道绝对路径的情况下切换到更高级别。
尝试这个:
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
我发现以下命令将全部返回Python 3.6脚本的父目录的完整路径。
Python 3.6脚本:
#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
from pathlib import Path
#Get the absolute path of a Python3.6 script
dir1 = Path().resolve() #Make the path absolute, resolving any symlinks.
dir2 = Path().absolute() #See @RonKalian answer
dir3 = Path(__file__).parent.absolute() #See @Arminius answer
print(f'dir1={dir1}\ndir2={dir2}\ndir3={dir3}')
PYTHON中的有用路径属性:
from pathlib import Path
#Returns the path of the directory, where your script file is placed
mypath = Path().absolute()
print('Absolute path : {}'.format(mypath))
#if you want to go to any other file inside the subdirectories of the directory path got from above method
filePath = mypath/'data'/'fuel_econ.csv'
print('File path : {}'.format(filePath))
#To check if file present in that directory or Not
isfileExist = filePath.exists()
print('isfileExist : {}'.format(isfileExist))
#To check if the path is a directory or a File
isadirectory = filePath.is_dir()
print('isadirectory : {}'.format(isadirectory))
#To get the extension of the file
fileExtension = mypath/'data'/'fuel_econ.csv'
print('File extension : {}'.format(filePath.suffix))
输出: 绝对路径是放置Python文件的路径
绝对路径:D:\ Study \ Machine Learning \ Jupitor Notebook \ JupytorNotebookTest2 \ Udacity_Scripts \ Matplotlib和seaborn Part2
文件路径:D:\ Study \ Machine Learning \ Jupitor Notebook \ JupytorNotebookTest2 \ Udacity_Scripts \ Matplotlib和seaborn Part2 \ data \ fuel_econ.csv
isfileExist:真
isadirectory:错误
文件扩展名:.csv
IPython
有一个神奇的命令%pwd
来获取当前的工作目录。它可以按以下方式使用:
from IPython.terminal.embed import InteractiveShellEmbed
ip_shell = InteractiveShellEmbed()
present_working_directory = ip_shell.magic("%pwd")
在IPython Jupyter Notebook上%pwd
可以直接使用,如下所示:
present_working_directory = %pwd
## IMPORT MODULES
import os
## CALCULATE FILEPATH VARIABLE
filepath = os.path.abspath('') ## ~ os.getcwd()
## TEST TO MAKE SURE os.getcwd() is EQUIVALENT ALWAYS..
## ..OR DIFFERENT IN SOME CIRCUMSTANCES
abspath
。