Python获取脚本所在目录的正确方法

当我们编写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技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • python 弧度与角度互转实例

    下面是详细讲解“Python 弧度与角度互转实例”的攻略: 简介 角度与弧度的转换是数学运算中经常需要用到的。在 Python 中,通过引入 math 模块可以轻松实现角度与弧度之间的转换。 弧度与角度的定义 弧度(radian)是一个单位角度,定义为长度相等的圆弧所对的圆心角的大小为一个弧度。 角度(degree)是角的单位,一个圆被划分为 360 个等份…

    python 2023年6月3日
    00
  • Python HTTP库 requests 的简单使用详情

    以下是关于Python HTTP库requests的简单使用详情的攻略: Python HTTP库requests的简单使用详情 requests是一个流行的HTTP库,用于向Web服务器发送HTTP请求和接响应。以下是Python HTTP库requests的简单使用详情的攻略: 发送GET请求 以下是使用requests库发送GET请求的示例: impo…

    python 2023年5月14日
    00
  • 如何利用Python打开txt格式的文件

    当我们需要读写文本文件时,Python提供了内置的open()函数以及文件对象,可以极其方便地打开、读取、写入文本文件。 打开文本文件 首先,我们需要使用open()函数打开指定的文本文件,并得到一个文件对象。open()函数的基本用法如下: with open(filepath, mode) as f: # 处理文本文件内容 其中,filepath为要打开…

    python 2023年6月5日
    00
  • Python -m参数原理及使用方法解析

    本攻略将提供一个Python-m参数原理及使用方法解析,包括-m参数的含义和使用方法。攻略将包含两个示例,分别演示如何使用-m参数。 -m参数的含义 -m参数是Python解释器的一个命令行选项,用于指定要执行的模块。使用-m参数时,Python解释器将加载指定的模块,并执行其中的代码。 -m参数的使用方法 以下是一个示例,演示如何使用-m参数来执行指定的模…

    python 2023年5月15日
    00
  • Python中的复杂数据类型(list、tuple)

    以下是“Python中的复杂数据类型(list、tuple)”的完整攻略。 1. list list是Python中最常用的数据类型之一,它是一个有序的集合,可以包含任意类型的对象,包括数字、字符串、列表、元组、字典等。list可以通过索引访问其中的元素,也可以通过切片操作获取其中的子列表。示例如下: my_list = [1, ‘hello’, [2, 3…

    python 2023年5月13日
    00
  • 在Python中对具有多维系数的Legendre数列进行微分

    在Python中,可以使用SciPy库里的模块 special 来计算Legendre多项式,并进行微分操作。 首先,使用以下代码导入 special 模块: from scipy import special 接着,使用以下代码计算具有n阶和m阶的Legendre多项式: n = 2 m = 3 pnm = special.lpmv(m,n,0.5) # …

    python-answer 2023年3月25日
    00
  • Python计算素数个数的两种方法

    Python计算素数个数的两种方法 本文介绍计算素数个数的两个方法:暴力枚举法和埃拉托色尼筛法。两种方法虽然在时间复杂度上有所不同,但都可以有效地计算素数的个数。 一、暴力枚举法 暴力枚举法顾名思义,就是从1到n,枚举每个数字,然后判断它是否是素数。具体实现,可以使用双重循环来实现,最外层循环枚举数字,内层循环判断是否为素数。判断素数的方法,可以使用试除法,…

    python 2023年6月3日
    00
  • python处理列表的部分元素的实例详解

    来讲解一下 “python处理列表的部分元素的实例详解” 吧。 标题 我们首先需要添加一个一级标题来简述我们要讲解的内容,如下: Python处理列表的部分元素的实例详解 介绍 在Python中,列表是一种非常常见的数据类型,我们经常需要对列表进行操作来满足不同的需求。其中,处理列表的部分元素,是我们操作中非常重要的一个环节。比如说,我们可能需要取出一个列表…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部