os.getcwd()与os.curdir的使用

本文详细解析了Python中os.getcwd()与os.curdir的功能及区别,这两个函数均可用于获取当前执行Python文件的目录,但os.curdir直接返回'.'表示当前路径。文章通过实例演示了os.getcwd()与os.path.abspath(os.curdir)返回相同结果的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【时间】2018.11.13

【题目】os.getcwd()与os.curdir的使用

os.getcwd()与os.curdir都是用于获取当前执行python文件的文件夹,不过当直接使用os.curdir时会返回‘.’(这个表示当前路径),记住返回的是当前执行python文件的文件夹,而不是python文件所在的文件夹。

PS:os.getcwd()与os.path.abspath(os.curdir)返回的结果是一样的。具体看下面的例子:

【代码】

#C:\Users\Administrator\Desktop\text.py
import os, sys
print('my os.getcwd =>', os.getcwd())           # show my cwd execution dir
print('my os.curdir =>',  os.path.abspath(os.curdir))
input()                                         # wait for keypress if clicked

【运行结果】

<think>我们正在讨论Python中如何实现类似Makefile中的CURDIR功能。在Makefile中,`CURDIR`是一个自动变量,表示当前工作目录的绝对路径。在Python中,我们可以使用`os`模块来获取当前工作目录。在Python中,获取当前工作目录的常用方法是使用`os.getcwd()`。这个函数返回一个字符串,表示当前工作目录的绝对路径。但是,请注意:在Makefile中,`CURDIR`是由make自动设置的,并且它始终是绝对路径。在Python中,`os.getcwd()`也是返回绝对路径。另外,有时我们可能希望获取脚本文件所在的目录,而不是当前工作目录。这时可以使用`os.path.dirname(os.path.abspath(__file__))`。但是,注意用户要求的是类似`CURDIR`的功能,即当前工作目录,所以应该使用`os.getcwd()`。因此,Python中等效于Makefile中的`CURDIR`(即当前工作目录)的方法是`os.getcwd()`。下面是一个简单的示例:```pythonimport oscurdir =os.getcwd() print(f"当前工作目录:{curdir}")```运行这段代码,将打印出当前工作目录的绝对路径。注意:当前工作目录可能会随着程序的执行而改变(例如,调用`os.chdir()`),而`os.getcwd()`总是返回当前的工作目录。如果用户希望获取脚本所在目录(类似于Makefile中通过`$(dir$(abspath$(lastword $(MAKEFILE_LIST))))`获取的方式),那么应该使用`os.path.dirname(os.path.abspath(__file__))`。但是,根据问题描述,用户明确要求的是`CURDIR`,所以我们提供`os.getcwd()`。另外,在Makefile中,`CURDIR`是只读的,而在Python中,我们可以通过`os.chdir()`改变当前工作目录,所以`os.getcwd()`返回的是实时的当前工作目录。总结:在Python中,使用`os.getcwd()`来获取当前工作目录,相当于Makefile中的`CURDIR`。下面我们生成相关问题。</think>### Python 中实现类似 Makefile 的 CURDIR 功能 在 Python 中,要实现类似 Makefile 中 `CURDIR := .` 的功能(获取当前工作目录的绝对路径),可以使用 `os` 模块或 `pathlib` 模块。以下是两种实现方式: #### 方法 1:使用 `os` 模块(兼容旧版 Python) ```python import os # 获取当前工作目录的绝对路径(相当于 CURDIR) current_dir = os.getcwd() print(f"当前工作目录: {current_dir}") # 获取当前脚本所在目录的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) print(f"脚本所在目录: {script_dir}") ``` #### 方法 2:使用 `pathlib` 模块(Python 3.4+ 推荐) ```python from pathlib import Path # 获取当前工作目录的绝对路径(相当于 CURDIR) current_dir = Path.cwd() print(f"当前工作目录: {current_dir}") # 获取当前脚本所在目录的绝对路径 script_dir = Path(__file__).resolve().parent print(f"脚本所在目录: {script_dir}") ``` #### 关键区别说明: 1. **`os.getcwd()` / `Path.cwd()`** 返回**当前工作目录**(运行脚本时的目录),类似于 Makefile 中的 `CURDIR`。 2. **`__file__` + `os.path.abspath()` / `Path.resolve()`** 返回**脚本文件所在的目录**(不受工作目录影响),类似于 Makefile 中的 `$(dir $(abspath $(lastword $(MAKEFILE_LIST))))`。 3. **路径表示** `os` 模块返回字符串路径,`pathlib` 返回 `Path` 对象(支持链式操作)。 > **注意**:`CURDIR` 在 Makefile 中是动态变量,而 Python 中这些值在获取后不会自动更新。如果需要实时路径,需在每次使用时重新调用[^1]。 ### 实际应用示例 ```python from pathlib import Path # 创建 CURDIR 等效变量 CURDIR = Path.cwd() # 构建项目路径 src_dir = CURDIR / "src" build_dir = CURDIR / "build" print(f"源代码目录: {src_dir}") print(f"构建目录: {build_dir}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值