当我们编写Python程序时,有时需要获取当前执行文件所在的目录。获取程序所在目录在处理文件读取、文件写入、文件路径转换等场景下都是非常必要的。Python提供了多种方式获取执行文件所在目录,但是有些方式并不正确,因此在本文中将为大家介绍Python获取脚本所在目录的正确方法。
方法一:使用os.path
Python中的os.path模块可以用于操作文件路径字符串,包括获取路径、文件名、文件扩展名等。其中,os.path.abspath()函数可以获得程序所在的绝对路径,os.path.dirname()函数可以获取程序所在目录的路径。利用这两个函数,就可以得到程序所在目录。示例代码如下:
import os
dir_path = os.path.dirname(os.path.abspath(__file__))
print(dir_path)
使用__file__获取当前文件的路径,这里的路径是相对路径,调用os.path.abspath()函数将其转换为绝对路径,并使用os.path.dirname()函数获取所在目录的路径。
如果当前文件执行的时候,是从其他目录执行的,那么获取的结果并不是我们所期望的程序所在目录。这时我们需要根据当前工作目录来计算程序所在目录。示例代码如下:
import os
dir_path = os.path.dirname(os.path.abspath(os.path.join(os.getcwd(), __file__)))
print(dir_path)
先使用os.getcwd()获取当前工作目录,再使用os.path.join()函数将该工作目录和当前文件的相对路径合并为绝对路径,并调用os.path.dirname()函数获取所在目录的路径。
方法二:使用Pathlib模块
Python3.4开始引入了Pathlib模块,该模块提供了连接路径字符串、判断路径是否存在、读取文件等功能。Pathlib模块中的Path类可以代替os.path模块中的函数,同时使用起来更加简洁明了。示例代码如下:
from pathlib import Path
dir_path = Path(__file__).resolve().parent
print(dir_path)
使用Path(file)创建一个Path实例,__file__表示当前文件的相对路径。调用resolve()函数得到该文件的绝对路径,再使用parent属性获取所在目录的路径。
总结
在Python中,获取程序所在目录有很多种方式,但并非每种方式都是正确的。以上介绍的两种方法都是可靠的获取脚本所在目录的方式,在实际应用中,你可以根据自己的需要来选择。但通常情况下,使用os.path或Pathlib模块是获取程序所在目录的最佳实践。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python获取脚本所在目录的正确方法 - Python技术站