Python获取路径与访问文件

本文介绍Python中如何获取文件的绝对路径、所在目录及上级目录,并演示了使用相对路径和绝对路径访问文件的方法。

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

一、获取路径和所在目录

目录结构:
.
└── ES
├── rest
│ └──test_direction.py
└── data
│ └── abc.txt
└── a.txt

test_direction.py:

# -*- coding: utf-8 -*-
import os
print("获取当前文件的绝对路径:")
print(os.path.abspath(__file__))
#输出为:D:\ES\rest\test_direction.py
-------------------------------------------
print("获取当前文件的目录:")
print(os.path.dirname(__file__))
print(os.path.abspath(os.path.dirname(__file__)))
print(os.getcwd())
输出为:D:/ES/rest
:D:\ES\rest
:D:\ES\rest
----------------------------------------
print("获取当前文件的上级目录:")
print(os.path.dirname(os.path.dirname(__file__)))
print (os.path.abspath(os.path.dirname(os.getcwd())))
输出为:D:/ES

备注:目录的写法可以分为两种:a)斜杠;b)反斜杠。
a)斜杠

D:/ES/rest/test_direction.py,斜杠用法为python路径默认用法。

b)反斜杠

D:\ES\rest\test_direction.py,反斜杠是转义字符的意思,使用反斜杠表示路径只能使用两种方式:
i)加r:r'D:\ES\rest\test_direction.py'
ii)加双斜杠:'D:\\ES\\rest\\test_direction.py'

二、访问文件
访问文件的方式一般分为两种:1)绝对路径访问;2)相对路径访问。
以绝对路径访问适用于初学习者,主要是为了避免路径出错。但绝对路径不利于工程的移植,如果路径不对,很容易出现Bug。因此,我们更多的在程序中使用相对路径。
相对路径的使用方法:
.
└── ES
├── rest
│ └──test_direction.py
│ └── ab.txt
└── data
│ └── abc.txt
└── a.txt

#a)访问同一文件夹下的文件:
#例如当前文件为test_direction.py时,访问ab.txt文件的代码为
f=open('ab.txt','r')
#当然访问当前路径下的文件还可以表示为:
f=open('./ab.txt','r')
#注意:这里使用的是一个点,即一个点表示当前目录。
#b)访问不同文件夹下的文件:
#访问abc.txt时的代码为:
f=open('../data/abc.txt','r')# '..'表示当前目录的上一层目录
#访问a.txt的代码:
f=open('../a.txt','r')
Python中,获取文件的绝对路径有多种方式,主要依赖于使用的模块具体场景。以下是几种常见的方法: ### 使用 `os` 模块 1. **获取当前工作目录**: 可以使用 `os.getcwd()` 函数来获取当前工作目录的绝对路径。 ```python import os print("当前工作目录:", os.getcwd()) ``` 2. **将相对路径转换为绝对路径**: 通过 `os.path.abspath(path)` 函数可以将给定的相对路径转换成绝对路径。 ```python print("绝对路径:", os.path.abspath('example.txt')) ``` 3. **获取当前文件的绝对路径**: 利用 `__file__` 特殊变量结合 `os.path.realpath(__file__)` 可以得到当前执行脚本的绝对路径[^4]。 ```python print("当前文件的绝对路径:", os.path.realpath(__file__)) ``` 4. **获取当前文件所在目录**: 结合 `os.path.dirname()` `os.path.realpath(__file__)` 能够获取到当前文件所在的目录路径。 ```python print("当前文件所在目录:", os.path.dirname(os.path.realpath(__file__))) ``` 5. **构建特定文件的绝对路径**: 使用 `os.path.join()` 方法可以根据当前文件所在目录构造其他文件的绝对路径。 ```python dir_path = os.path.dirname(os.path.realpath(__file__)) config_file_path = os.path.join(dir_path, "config", "data.yaml") print("配置文件的绝对路径:", config_file_path) ``` ### 使用 `pathlib` 模块 (Python 3.4+) 从 Python 3.4 开始引入了 `pathlib` 模块,它提供了一种更直观、面向对象的方式来处理文件系统路径。 1. **获取当前工作目录**: 通过调用 `Path.cwd()` 获取当前工作目录的对象,并使用 `.absolute()` 方法输出其绝对路径。 ```python from pathlib import Path current_path = Path.cwd() print("当前工作目录的绝对路径:", current_path.absolute()) ``` 2. **构建文件的绝对路径**: 利用 `/` 运算符可以方便地拼接路径,然后使用 `.resolve()` 方法确保返回的是一个规范化的绝对路径。 ```python file_path = current_path / 'example.txt' print("文件的绝对路径:", file_path.resolve()) ``` 3. **获取当前文件的绝对路径**: 类似于 `os` 模块的方法,可以通过 `__file__` `Path` 对象来获取当前文件的绝对路径。 ```python current_file_path = Path(__file__).resolve() print("当前文件的绝对路径:", current_file_path) ``` 4. **获取当前文件所在目录**: 通过 `.parent` 属性可以轻松访问到父级目录。 ```python print("当前文件所在目录:", current_file_path.parent) ``` 5. **构建特定文件的绝对路径**: 同样利用 `/` 运算符或 `.joinpath()` 方法来创建指向特定文件路径。 ```python config_file_path = current_file_path.parent.joinpath("config", "data.yaml") print("配置文件的绝对路径:", config_file_path) ``` 这些方法覆盖了大多数情况下需要获取文件绝对路径的需求。选择哪种方式取决于项目需求个人偏好;对于新项目推荐使用 `pathlib` 因为其简洁性可读性更好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值