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

yizhihongxing

当我们编写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日

相关文章

  • Python2包含中文报错的解决方法

    在Python2中,如果代码中包含中文字符,有时候会出现编码错误的问题。这个问题可能是由于Python2默认使用ASCII编码,而中文不在ASCII编码范围内导致的。以下是解决Python2包含中文报错的解决方法及整攻略。 1. 使用Unicode字符串 在Python2中,我们可以使用Unicode字符串解决包含中文字符的编码问题。Unicode字符串可以…

    python 2023年5月13日
    00
  • python语音信号处理详细教程

    Python 语音信号处理详细教程攻略 简介 本教程旨在帮助初学者了解 Python 中的语音信号处理,包括频率、FFT、STFT、滤波、mfcc 等基础操作。本教程适合对语音信号处理感兴趣的人士,对 Python 语言有一定基础,希望能够快速入门语音信号处理的内容。 准备工作 在开始学习本教程之前,请确保已经完成以下准备工作:- 安装 Python 环境(…

    python 2023年6月6日
    00
  • 最新PyCharm 2021.3.1永久激活码(亲测有效)

    最新PyCharm 2021.3.1永久激活码(亲测有效)攻略 PyCharm是由JetBrains公司开发的一款Python IDE,功能强大,但是需要付费购买。然而,有些人可能无法或不愿意购买正版软件,于是就需要寻找PyCharm的激活码来使其能够免费使用。本攻略介绍的是最新的PyCharm 2021.3.1的永久激活码,亲测有效。 步骤一:下载并安装P…

    python 2023年6月3日
    00
  • Python列表(list)、字典(dict)、字符串(string)基本操作小结

    以下是详细讲解“Python列表(list)、字典(dict)、字符串(string)基本操作小结”的完整攻略。 在Python中,列表、字典和字符串是三种常用的数据类型。本文将介绍这三种数据基本操作,包括创建、访问、添加和删除元素、切片、排序等。 列表(list)的基本操作 创建列表 在Python中,可以使用方括号[]或list()函数来创建一个列表。例…

    python 2023年5月13日
    00
  • Python如何利用正则表达式爬取网页信息及图片

    以下是“Python如何利用正则表达式爬取网页信息及图片”的完整攻略: 一、问题描述 在Python中,我们可以使用正则表达式来爬取网页信息及图片。本文将详细讲解Python如何利用正则表达式爬取网页信息及图片的方法,以及如何在实际开发中应用。 二、解决方案 2.1 爬取网页信息 在Python中,我们可以使用urllib库来获取网页内容,然后使用正则表达式…

    python 2023年5月14日
    00
  • Python机器学习中实现距离和相似性计算详解

    Python机器学习中实现距离和相似性计算详解 在机器学习中,距离和相似性计算是非常重要的一环,它们常常被应用在聚类、分类、推荐系统等领域。本文将详细讲解如何在Python中实现距离和相似性计算。 距离计算 欧式距离 欧式距离是最常见的距离计算方法之一,它可以用来计算两个n维向量之间的距离。其定义如下: $$ d(x, y) = \sqrt{\sum_{i=…

    python 2023年6月3日
    00
  • python中pickle模块浅析

    Python中pickle模块浅析 简介 pickle是Python中常用的用于序列化和反序列化数据的模块,能够将Python对象转换成二进制流以便于储存和传输。pickle模块主要的两个函数是dump()和load()。dump()函数将Python对象序列化为二进制数据并存储,而load()函数则从二进制数据文件中读取并反序列化Python对象。 使用方…

    python 2023年6月2日
    00
  • CryptographyDeprecationWarning:Python 核心团队不再支持 Python 2

    【问题标题】:CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core teamCryptographyDeprecationWarning:Python 核心团队不再支持 Python 2 【发布时间】:2023-04-04 14:28:01 【问题…

    Python开发 2023年4月6日
    00
合作推广
合作推广
分享本页
返回顶部