python 中绝对路径和相对路径

Python提供了os模块来处理当前工作目录以及绝对路径和相对路径的转换。os.getcwd()用于获取,os.chdir()用于改变当前工作目录。os.path模块包含了多种路径处理函数,如abspath()转为绝对路径,isabs()检查是否为绝对路径,relpath()获取相对路径,以及exists()、isfile()和isdir()判断路径的存在和类型。

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

当前工作目录(cwd):

每个运行在计算机上的程序,都有一个“当前工作目录”,所有没从根文件夹开始的文件名或路径,都假定在当前工作目录下。

获取当前工作目录

在python中可以利用 os.getcwd() 函数获取当前工作路径字符串,还可以利用 os.chdir() 改变它。

>>> import os
>>> os.getcwd()
'C:\\Users\\mengma\\Desktop'
>>> os.chdir('C:\\Windows\\System32')
>>> os.getcwd()
'C:\\Windows\\System32'

注意:如果 os.chdir() 修改的工作目录不存在,python解释器会报错。

绝对路径与相对路径

明确一个文件所在的路径,有两种表示方式,分别是:
绝对路径:总是从根文件夹开始,windows系统中已盘符(C:,D:)作为根文件夹;而 OS X 或者Linux系统中以 / 作为根文件夹。
相对路径:指文件相对于当前工作目录所在的位置。例如,当前工作目录为"C:\Windows\System32",若文件 demo.txt 就位于这个 System32 文件夹下,则 demo.txt 的相对路径表示为 “.\demo.txt” 其中 .\ 表示当前所在目录。
此外,除了经常使用 .\ 表示当前目录之外,还会用到 …\ 表示当前所在目录的父目录。

python 处理绝对路径和相对路径

Python os.path 模块提供了一些函数,可以实现绝对路径和相对路径之间的转换,以及检查给定的路径是否为绝对路径,比如说:
调用 os.path.abspath(path) 将返回 path 参数的绝对路径的字符串,这是将相对路径转换为绝对路径的简便方法。
调用 os.path.isabs(path),如果参数是一个绝对路径,就返回 True,如果参数是一个相对路径,就返回 False。
调用 os.path.relpath(path, start) 将返回从 start 路径到 path 的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。
调用 os.path.dirname(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之前的所有内容;调用 os.path.basename(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之后的所有内容。

>>> os.getcwd()
'C:\\Windows\\System32'
>>> os.path.abspath('.')
'C:\\Windows\\System32'
>>> os.path.abspath('.\\Scripts')
'C:\\Windows\\System32\\Scripts'
>>> os.path.isabs('.')
False
>>> os.path.isabs(os.path.abspath('.'))
True
>>> os.path.relpath('C:\\Windows', 'C:\\')
'Windows'
>>> os.path.relpath('C:\\Windows', 'C:\\spam\\eggs')
'..\\..\\Windows'
>>> path = 'C:\\Windows\\System32\\calc.exe'
>>> os.path.basename(path)
'calc.exe'
>>> os.path.dirname(path)
'C:\\Windows\\System32'

除此之外,如果同时需要一个路径的目录名称和基本名称,就可以调用 os.path.split() 获得这两个字符串的元组,例如:

>>> path = 'C:\\Windows\\System32\\calc.exe'
>>> os.path.split(path)
('C:\\Windows\\System32', 'calc.exe')

同时,如果提供的路径不存在,许多 Python 函数就会崩溃并报错,但好在 os.path 模块提供了以下函数用于检测给定的路径是否存在,以及它是文件还是文件夹:
如果 path 参数所指的文件或文件夹存在,调用 os.path.exists(path) 将返回 True,否则返回 False。
如果 path 参数存在,并且是一个文件,调用 os.path.isfile(path) 将返回 True,否则返回 False。
如果 path 参数存在,并且是一个文件夹,调用 os.path.isdir(path) 将返回 True,否则返回 False。

http://c.biancheng.net/view/5693.html

### Python 中读取文件的绝对路径相对路径Python 中,`pathlib` 是处理文件路径的标准库之一。它提供了 `Path` 类来表示文件系统的路径,并允许通过简单的方法调用来获取文件的绝对路径相对路径。 #### 获取文件的绝对路径 可以通过 `Path.resolve()` 方法获取文件的绝对路径。此方法会解析任何符号链接并返回一个新的路径对象[^1]。如果传入的是相对路径,在某些操作系统下(如 Linux 或 macOS),该方法会将其转换为相对于当前工作目录的绝对路径;而在 Windows 上,则可能涉及盘符的调整[^2]。 以下是使用 `Path.resolve()` 的示例代码: ```python from pathlib import Path file_path = Path("example.txt") # 假设 example.txt 存在于当前工作目录中 absolute_path = file_path.resolve() print(f"Absolute path of the file: {absolute_path}") ``` #### 获取文件的相对路径 要获得某个文件相对于另一个路径的相对路径,可以使用 `relative_to()` 方法。这个方法接受一个参数作为起点路径,并计算目标路径与此起点之间的相对关系[^3]。 下面展示了一个例子,其中演示了如何基于指定的工作目录得到文件的相对路径: ```python current_directory = Path.cwd() # 当前工作目录 relative_path = file_path.relative_to(current_directory) print(f"Relative path from current directory to file: {relative_path}") ``` 需要注意的一点是,当尝试创建一个不存在于给定基底之下的相对路径时,将会抛出异常 `ValueError`[^4]。 #### 结合实际场景的应用实例 假设有一个名为 `data.csv` 的文件位于子目录 `subdir/` 下面,那么我们可以这样操作: ```python base_dir = Path(".") csv_file = base_dir / "subdir" / "data.csv" abs_csv_path = csv_file.resolve() rel_csv_path = csv_file.relative_to(base_dir) print(f"Absolute CSV File Path: {abs_csv_path}") print(f"Relative CSV File Path: {rel_csv_path}") ``` 以上脚本首先定义了一个基础目录 (`.` 表示当前位置),接着构建出了指向数据文件的具体位置描述器。最后分别打印其对应的绝对形式以及相对于项目根部而言的位置表述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值