Python 绝对路径和相对路径

文摘   科技   2024-10-21 08:08   上海  

点击蓝字,关注山海摸鱼人

目录:

  1. 当前工作目录
  2. 绝对路径与相对路径
  3. 使用Python处理路径
  4. 文件存在性检查及类型判断

当前工作目录

首先,我们需要了解“当前工作目录(Current Working Directory, CWD)”的概念。每个程序运行时都有一个默认的工作目录,所有未明确指定完整路径的操作都将在这个目录下执行。我们可以通过Python的os模块来获取或修改当前工作目录。

import os  # 导入os模块以使用系统相关的功能

# 获取当前工作目录
current_directory = os.getcwd()
print("当前工作目录是:", current_directory)

# 假设我们要改变当前工作目录到C盘下的某个文件夹
new_working_directory = 'C:\\Users\\山海摸鱼人\\Documents'
try:
    os.chdir(new_working_directory)
    print("工作目录已更改至:", new_working_directory)
except FileNotFoundError:
    print(f"无法找到路径: {new_working_directory}")

上面代码展示了如何查看当前工作目录以及尝试切换到新的目录。如果新目录不存在,程序会捕捉到FileNotFoundError异常并给出提示信息。

绝对路径与相对路径

接下来,让我们看看什么是绝对路径和相对路径。

  • 绝对路径:是从根目录开始的完整路径。例如,在Windows上可能是C:\Users\山海摸鱼人\Documents\example.txt
  • 相对路径:则是相对于当前工作目录的位置。比如.\example.txt代表当前目录下的example.txt文件,而..\another_folder\example.txt则表示上级目录中的another_folder文件夹内的example.txt文件。
当前目录与父目录
  • ./ 代表当前工作目录。
  • ../ 代表当前工作目录的上一级(父)目录。
示例说明

假设你的电脑上有如下结构:

C:.
└── Users
    └── 山海摸鱼人
        ├── Documents
        │   └── example.txt
        └── Downloads
            └── another_example.txt

C:\Users\山海摸鱼人\Documents\example.txt 是一个绝对路径。

如果当前工作目录是C:\Users\山海摸鱼人\Downloads

  • ..\Documents\example.txt就是一个相对路径,它指向了同一用户的文档文件夹里的example.txt
  • .\another_example.txt 就是指 C:\Users\山海摸鱼人\Downloads\another_example.txt

使用Python处理路径

Python提供了一个强大的os.path子模块来帮助我们更方便地处理文件路径问题。下面是一些常用的方法及其用法示例:

1、转换为绝对路径 - os.path.abspath(path)
2、检查是否为绝对路径 - os.path.isabs(path)
3、计算相对路径 - os.path.relpath(path, start)
4、获取路径的基本名 - os.path.basename(path)
5、获取路径的目录名 - os.path.dirname(path)

# 定义几个路径供演示
relative_path = '.\\example.txt'  # 相对于当前目录
absolute_path = 'C:\\Users\\山海摸鱼人\\Documents\\example.txt'

# 将相对路径转为绝对路径
absolute_version = os.path.abspath(relative_path)
print("相对路径转绝对路径:", absolute_version)

# 检查给定路径是否为绝对路径
print("检查是否为绝对路径:", os.path.isabs(absolute_path))

# 计算从C盘根目录到目标文件的相对路径
relative_from_cdrive = os.path.relpath(absolute_path, 'C:\\')
print("从C盘根目录到目标文件的相对路径:", relative_from_cdrive)

# 分离出文件名部分
file_name = os.path.basename(absolute_path)
print("文件名:", file_name)

# 分离出目录部分
directory = os.path.dirname(absolute_path)
print("所在目录:", directory)

这段代码演示了如何利用os.path的各种方法来操作文件路径。你可以根据自己的需要调整这些路径值。

文件存在性检查及类型判断

最后,为了安全起见,在对文件进行读写之前,通常我们会先验证文件是否存在,以及确定它是文件还是目录。

test_file = 'C:\\Users\\山海摸鱼人\\Documents\\example.txt'
test_dir = 'C:\\Users\\山海摸鱼人\\Documents'

# 检查文件或目录是否存在
exists = os.path.exists(test_file)
print(f"{test_file} 存在吗? {'是' if exists else '否'}")

# 判断是否为文件
is_file = os.path.isfile(test_file)
print(f"{test_file} 是文件吗? {'是' if is_file else '否'}")

# 判断是否为目录
is_dir = os.path.isdir(test_dir)
print(f"{test_dir} 是目录吗? {'是' if is_dir else '否'}")

通过以上步骤,你应该掌握了基本的路径管理和文件检查技巧。

山海摸鱼人
致力于记录美好之瞬间,追寻美好之明天。
 最新文章