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日

相关文章

  • 如何将一个CSV格式的文件分割成两个CSV文件

    以下是将CSV文件分割成两个CSV文件的攻略。 准备工作 要将CSV文件分割成两个CSV文件,你需要确保你的电脑上有Python环境。如果你没有安装Python,请先安装Python,然后继续阅读本文档。 第一步:读取CSV数据 我们首先需要读取原始的CSV数据。这可以通过Python的csv模块来完成。代码示例: import csv with open(…

    python 2023年6月3日
    00
  • Python练习-购物单

    Python练习-购物单是一道经典的Python编程题目,考验了应用者对Python基本语法的掌握程度以及对控制流、函数和数据类型等相关知识的理解。为了帮助大家完成这个练习,以下是完整的攻略说明。 题目描述 本练习的目标是根据一份购物清单,计算出一个人需要支付的总价。清单格式如下: 苹果 4.5 元/kg 香蕉 3.8 元/kg 西瓜 7.5 元/kg ..…

    python 2023年6月3日
    00
  • 快速搭建python爬虫管理平台

    下面是详细讲解“快速搭建python爬虫管理平台”的完整攻略。 准备工具 在开始之前,你需要准备以下工具:- Python 3.x- Flask- MongoDB- PyMongo 步骤一:创建Flask应用 首先,我们需要创建一个Flask应用。在命令行中输入以下内容: from flask import Flask app = Flask(__name_…

    python 2023年5月14日
    00
  • python 根据列表批量下载网易云音乐的免费音乐

    下面我将详细讲解“python 根据列表批量下载网易云音乐的免费音乐”的完整攻略。 1. 确认目标 首先要明确目标,即要批量下载的音乐是网易云音乐的免费音乐,而且我们需要提供一个音乐链接列表。 2. 安装必要的库 接着需要安装两个必要的Python库,一个是requests,用于获取API数据,另一个是pydub,用于处理音频文件。 pip install …

    python 2023年6月3日
    00
  • Python 虚拟机集合set实现原理及源码解析

    Python 虚拟机集合 set 实现原理及源码解析 什么是 set set 是 Python 中的一种基本数据类型,用于存储无序、不重复的元素集合。set 的特点是: 无序性:set 中没有元素的顺序关系。 互异性:set 中的元素都是唯一的,重复的元素会被自动忽略。 set 中可以存储任意类型的数据,例如数字、字符串、元组等不可变类型,但是不能存储可变类…

    python 2023年6月7日
    00
  • Python 马氏距离求取函数详解

    以下是关于“Python马氏距离求取函数详解”的完整攻略: 简介 马氏距离是一种用于衡量多维数据之间相似度的方法,它考虑了数据之间的相关性,可以用于聚类、分类、降维等多种机器学习任务。在本教程中,我们将介绍如何使用Python实现马氏距离算法,并解析相关函数的实现方法和代码。 马氏距离的定义 马氏距离是一种用于衡量多维数据之间相似度的方法,它考虑了数据之间的…

    python 2023年5月14日
    00
  • Python 异常处理Ⅳ过程图解

    Python 异常处理过程图解 概述 异常处理是编写高可靠性程序的关键技能。当发生异常时,程序不会终止,而是跳转到相应的异常处理代码块。Python 中的异常处理包括 try、except、else 和 finally 四个关键字。错误类型需要与 Exception 类或其子类相匹配。 异常处理过程图解 异常处理流程如下: 程序运行,尝试执行 try 代码块…

    python 2023年5月13日
    00
  • 十道Python面试最常问到的问题

    下面是“十道Python面试最常问到的问题”的完整攻略: 1. 解释Python中的GIL(全局解释锁)是什么? GIL是Python解释器中的一个重要概念,它实际上是Python多线程并发的一个限制。在同一时间内,只有一个线程在执行Python字节码。当一个线程处于执行状态时,它会占用GIL,其他线程就不能执行Python字节码了,它们只能等待当前线程释放…

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