Python文件处理笔记-os.path-1(自用)

os.path 是 Python 标准库中的一个模块,它提供了许多与路径操作相关的函数,用于处理文件和目录的路径名称。以下是一些 os.path 模块中的常用语句及其用途: 

1. **判断路径或文件是否存在**

   import os.path
   
   path = "example/file.txt"
   if os.path.exists(path):
       print(f"{path} 存在。")
   else:
       print(f"{path} 不存在。")
  

2. **判断是否为目录**

   if os.path.isdir(path):
       print(f"{path} 是一个目录。")
   else:
       print(f"{path} 不是一个目录。")
  3. **判断是否为文件**

   if os.path.isfile(path):
       print(f"{path} 是一个文件。")
   else:
       print(f"{path} 不是一个文件。")


  4. **获取路径中的目录部分**

   directory = os.path.dirname(path)
   print(f"目录部分为: {directory}")

5. **获取路径中的文件名部分**

   filename = os.path.basename(path)
   print(f"文件名为: {filename}")
  

6. **规范化路径**

   normalized_path = os.path.normpath(path)
   print(f"规范化后的路径为: {normalized_path}")
  

7. **相对路径转换**

   reference_path = "/home/user/documents"
   relative_path = os.path.relpath(path, reference_path)
   print(f"相对于 {reference_path} 的路径为: {relative_path}")
  

8. **路径分解为目录和文件名**

   dir_name, file_name = os.path.split(path)
   print(f"目录名为: {dir_name}, 文件名为: {file_name}")
  

9. **扩展名分离与替换**

   ext = os.path.splitext(path)[1]  # 获取扩展名
   new_path_no_ext = os.path.splitext(path)[0]  # 去除扩展名的路径
   new_path_with_diff_ext = f"{new_path_no_ext}.newext"  # 更改扩展名
   
   print(f"扩展名为: {ext}")
   print(f"无扩展名的路径为: {new_path_no_ext}")
   print(f"新扩展名的路径为: {new_path_with_diff_ext}")
  

10.**目录提取**

os.path.dirname 用于从给定的路径中提取出目录部分。该模块提供了很多用于处理文件和目录路径的实用工具。

### 用法 os.path.dirname(path) 函数接受一个字符串参数 path,该参数是一个文件系统的路径。函数会返回路径中的目录部分作为字符串。 

### 示例 假设我们有以下路径:

- /home/User/Documents

- /home/User/Documents/file.txt

- file.txt 

我们可以使用 os.path.dirname 来获取每个路径中的目录部分:

import os.path

# 定义路径
paths = [
    '/home/User/Documents',
    '/home/User/Documents/file.txt',
    'file.txt'
]

# 对每个路径应用 os.path.dirname
for path in paths:
    directory_name = os.path.dirname(path)
    print(f"Directory of '{path}': {directory_name}")

### 输出 当你运行上面的代码时,输出将会是:

Directory of '/home/User/Documents': /home/User
Directory of '/home/User/Documents/file.txt': /home/User/Documents
Directory of 'file.txt': .

- 对于第一个路径 /home/User/Documents,os.path.dirname 返回 /home/User。

- 对于第二个路径 /home/User/Documents/file.txt,os.path.dirname 返回 /home/User/Documents。

- 对于第三个路径 file.txt,因为没有明确的父目录,os.path.dirname 返回 .,这代表当前目录。

  如果路径是以斜杠开始的绝对路径,那么 os.path.dirname 会返回绝对路径的目录部分。如果是相对路径,则返回相对目录部分。

11。**合并路径**

os.path.join() 用于跨平台地拼接文件路径。它能够根据操作系统(Windows 或 Unix-like 系统如 Linux 和 macOS)自动选择正确的路径分隔符(\ 或 /)。 

### 基本用法 os.path.join() 可以接受任意数量的位置参数,并将它们拼接成一个路径字符串。如果其中一个参数是绝对路径(以 '/' 开头在 Unix-like 系统中,或者以盘符加 ':' 和 '\' 在 Windows 系统中),那么这个绝对路径之前的路径部分都会被忽略。 

### 示例 下面是一些使用 os.path.join() 的示例:

import os

# 拼接相对路径
path = os.path.join('foo', 'bar', 'baz')
print(path)  # 输出: foo/bar/baz (Unix-like) 或 foo\bar\baz (Windows)

# 包含绝对路径的情况
path = os.path.join('/usr', 'local', 'bin', 'scripts')
print(path)  # 输出: /usr/local/bin/scripts

# 当前工作目录与相对路径的拼接
path = os.path.join(os.getcwd(), 'data', 'files')
print(path)  # 输出: 当前工作目录/data/files

# 使用绝对路径覆盖前面的部分
path = os.path.join('/usr', 'local', '/etc', 'hosts')
print(path)  # 输出: /etc/hosts

# 如果最后一个组件为空,生成的路径将以 '/' 结尾
path = os.path.join('/usr', 'local', '')
print(path)  # 输出: /usr/local/

import os

# 拼接相对路径
path = os.path.join('foo', 'bar', 'baz')
print(path)  # 输出: foo/bar/baz (Unix-like) 或 foo\bar\baz (Windows)

# 包含绝对路径的情况
path = os.path.join('/usr', 'local', 'bin', 'scripts')
print(path)  # 输出: /usr/local/bin/scripts

# 当前工作目录与相对路径的拼接
path = os.path.join(os.getcwd(), 'data', 'files')
print(path)  # 输出: 当前工作目录/data/files

# 使用绝对路径覆盖前面的部分
path = os.path.join('/usr', 'local', '/etc', 'hosts')
print(path)  # 输出: /etc/hosts

# 如果最后一个组件为空,生成的路径将以 '/' 结尾
path = os.path.join('/usr', 'local', '')
print(path)  # 输出: /usr/local/

### 注意事项

- 如果有多个绝对路径,只有最后一个绝对路径会被保留。

- 如果路径中有 . 或 ..,它们会被正确处理。

- 如果最后一个组件为空字符串,结果路径将以路径分隔符结束。 

### 实际应用 假设你需要创建一个函数来生成用户数据目录的路径,你可以这样使用 os.path.join():

def get_user_data_dir(username):
    base_dir = '/home'
    user_dir = os.path.join(base_dir, username, 'data')
    return user_dir

username = 'john_doe'
user_data_dir = get_user_data_dir(username)
print(user_data_dir)  # 输出: /home/john_doe/data


  

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值