Python中的绝对路劲和相对路径

本文介绍了Python中使用os模块进行文件路径操作的方法,包括获取绝对路径和相对路径等实用技巧,并展示了如何结合这两种方法来实现跨文件包的导入。

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



1、绝对路径

 os.path.abspath("文件名"):

显示的是一个文件的绝对路劲

eg:

?
1
2
3
4
5
6
>>> import os
>>> os.chdir( "E:\\PycharmProjects\\odycmdb\\odycmdb" )
>>> os.listdir()
[ 'settings.py' , 'urls.py' , 'wsgi.py' , '__init__.py' , '__pycache__' ]
>>> os.path.abspath( "settings.py" )
'E:\\PycharmProjects\\odycmdb\\odycmdb\\settings.py'

2、相对路径

os.path.dirname("文件名"):

显示的是一个文件的相对路径

eg:

?
1
2
3
4
5
6
>>> import os
>>> os.chdir( "E:\\PycharmProjects\\odycmdb\\odycmdb" )
>>> os.listdir()
[ 'settings.py' , 'urls.py' , 'wsgi.py' , '__init__.py' , '__pycache__' ]
>>> os.path.dirname( "settings.py" )
''

 3、总结

一般情况下,绝对路劲函数和相对路径函数是结合起来用的,特别是在多个文件包之前相互导入

①os.path.dirname(os.path.abspath("文件名")): 表示获取当前文件夹的所在的目录

eg:

?
1
2
3
4
5
6
7
8
>>> import os
>>> os.chdir( "E:\\PycharmProjects\\odycmdb\\odycmdb" )
>>> os.listdir()
[ 'settings.py' , 'urls.py' , 'wsgi.py' , '__init__.py' , '__pycache__' ]
>>> os.path.abspath( "settings.py" )
'E:\\PycharmProjects\\odycmdb\\odycmdb\\settings.py'
>>> os.path.dirname(os.path.abspath( "settings.py" ))
'E:\\PycharmProjects\\odycmdb\\odycmdb'

②os.path.dirname(os.path.dirname(os.path.abspath("文件名"))): 表示获取当前文件夹上一层目录

eg:

?
1
2
3
4
5
6
7
8
>>> import os
>>> os.chdir( "E:\\PycharmProjects\\odycmdb\\odycmdb" )
>>> os.listdir()
[ 'settings.py' , 'urls.py' , 'wsgi.py' , '__init__.py' , '__pycache__' ]
>>> os.path.abspath( "settings.py" )
'E:\\PycharmProjects\\odycmdb\\odycmdb\\settings.py'
>>> os.path.dirname(os.path.dirname(os.path.abspath( "settings.py" )))
'E:\\PycharmProjects\\odycmdb'
Python中修改绝对文件路径通常是指动态调整脚本中使用的文件路径。这可以通过多种方式实现,包括使用标准库中的`os``sys`模块来管理路径,并根据需要进行修改。以下是一些常见的方法: ### 使用 `os.path` 模块进行路径操作 Python 的 `os.path` 模块提供了许多用于处理文件路径的函数,可以用来拼接、拆分、获取文件名或目录名等。 #### 获取当前工作目录 ```python import os current_dir = os.getcwd() print(current_dir) # 输出当前工作目录的绝对路径 ``` #### 拼接路径 通过 `os.path.join()` 函数可以根据不同操作系统自动选择合适的路径分隔符(Windows 下为 `\`,Linux/macOS 下为 `/`)。 ```python new_path = os.path.join("D:\\project", "test", "bianzu.py") print(new_path) # 输出 D:\project\test\bianzu.py ``` #### 修改路径字符串 如果已有绝对路径,可以通过字符串操作来替换其中的部分内容。 ```python old_path = "C:\\Users\\Administrator\\Desktop\\ExperimentAss\\gcForest-master\\data.txt" new_path = old_path.replace("gcForest-master", "new_folder") print(new_path) # 输出 C:\Users\Administrator\Desktop\ExperimentAss\new_folder\data.txt ``` #### 分割路径与文件名 利用 `os.path.split()` 可以将路径分为目录部分文件名部分。 ```python path = r"D:\project\bianzu\email_bianzu.py" dir_part, file_part = os.path.split(path) print(dir_part) # 输出 D:\project\bianzu print(file_part) # 输出 email_bianzu.py ``` #### 获取文件所在目录 使用 `os.path.dirname()` 可以直接提取文件的目录部分。 ```python dir_only = os.path.dirname(path) print(dir_only) # 输出 D:\project\bianzu ``` #### 获取文件名 使用 `os.path.basename()` 可以提取文件名。 ```python file_only = os.path.basename(path) print(file_only) # 输出 email_bianzu.py ``` ### 动态修改系统路径 (`sys.path`) 如果需要修改 Python 解释器搜索模块的路径,可以使用 `sys.path.append()` 来临时添加新的路径。 ```python import sys sys.path.append("C:\\Users\\Administrator\\Desktop\\NewPath") # 添加新路径 ``` 此方法适用于在运行时动态调整模块导入路径[^2]。 ### 使用相对路径代替绝对路径 如果希望避免硬编码绝对路径,可以使用相对路径相对路径是相对于当前工作目录或脚本所在目录的路径。 ```python relative_path = os.path.join("..", "data", "input.txt") absolute_path = os.path.abspath(relative_path) print(absolute_path) # 输出基于当前工作目录的绝对路径 ``` ### 修改路径的其他技巧 - **使用 `pathlib` 模块**:Python 3.4 引入了 `pathlib` 模块,它提供了一种面向对象的方式来处理文件路径。 ```python from pathlib import Path p = Path("D:/project/bianzu/email_bianzu.py") print(p.parent) # 输出 D:\project\bianzu print(p.name) # 输出 email_bianzu.py new_p = p.with_name("new_file.txt") # 替换文件名 print(new_p) # 输出 D:\project\bianzu\new_file.txt ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值