Python3 OS 文件/目录方法详解

在 Python3 中,os模块提供了与操作系统进行交互的功能,尤其在文件和目录操作方面应用广泛。下面将详细介绍os模块中常用的文件和目录方法。

1. 路径操作

1.1 os.path.join(path, *paths)

作用:将多个路径组合成一个完整的路径,自动处理不同操作系统的路径分隔符。
示例
 
import os

path = os.path.join('home', 'user', 'documents', 'file.txt')
print(path)  # 输出:home/user/documents/file.txt(Linux系统)或 home\user\documents\file.txt(Windows系统)
 

1.2 os.path.abspath(path)

作用:返回路径的绝对路径形式。
示例
 
 
import os

relative_path = 'file.txt'
absolute_path = os.path.abspath(relative_path)
print(absolute_path)  # 输出:/当前工作目录/file.txt
 

1.3 os.path.dirname(path)

作用:返回路径中的目录部分。
示例

import os

path = '/home/user/documents/file.txt'
directory = os.path.dirname(path)
print(directory)  # 输出:/home/user/documents
 

1.4 os.path.basename(path)

作用:返回路径中的文件名或目录名。
示例
 
import os

path = '/home/user/documents/file.txt'
filename = os.path.basename(path)
print(filename)  # 输出:file.txt

path = '/home/user/documents/'
dirname = os.path.basename(path)
print(dirname)  # 输出:documents
 

1.5 os.path.exists(path)

作用:判断路径是否存在(文件或目录)。
示例
 
 
import os

print(os.path.exists('/home/user/documents/file.txt'))  # 输出:True或False,取决于文件是否存在
 

1.6 os.path.isfile(path)os.path.isdir(path)

作用:判断路径是文件还是目录。
示例

import os

print(os.path.isfile('/home/user/documents/file.txt'))  # 输出:True或False
print(os.path.isdir('/home/user/documents'))  # 输出:True或False
 

2. 文件操作

2.1 os.rename(src, dst)

作用:重命名文件或目录。
示例
 
 
import os

os.rename('old_name.txt', 'new_name.txt')
 

2.2 os.remove(path)

作用:删除文件。
示例
 
 
import os

os.remove('file_to_delete.txt')
 

2.3 os.replace(src, dst)

作用:替换文件,如果目标文件已存在则覆盖。
示例
 
 
import os

os.replace('source.txt', 'destination.txt')
 

3. 目录操作

3.1 os.mkdir(path, mode=0o777)

作用:创建目录(单级目录)。
示例

import os

os.mkdir('new_directory')
 

3.2 os.makedirs(path, mode=0o777, exist_ok=False)

作用:递归创建目录(多级目录)。
示例
 
 
import os

os.makedirs('parent/child/grandchild')  # 一次性创建三级目录
 

3.3 os.rmdir(path)

作用:删除空目录。
示例
import os

os.rmdir('empty_directory')
 

3.4 os.removedirs(path)

作用:递归删除空目录(从最内层目录开始删除,直到遇到非空目录)。
示例
 
 
import os

os.removedirs('parent/child/grandchild')  # 如果grandchild、child、parent都是空目录,则会被依次删除
 

3.5 os.listdir(path='.')

作用:返回指定目录下的所有文件和目录名(列表形式)。
示例

import os

entries = os.listdir('/home/user/documents')
print(entries)  # 输出:['file1.txt', 'file2.txt', 'directory1', ...]
 

4. 文件和目录属性

4.1 os.stat(path)

作用:返回文件或目录的详细信息(如大小、修改时间等)。
示例
 
 
import os

stat_info = os.stat('file.txt')
print(stat_info.st_size)  # 文件大小(字节)
print(stat_info.st_mtime)  # 最后修改时间(时间戳)
 

4.2 os.chmod(path, mode)

作用:修改文件或目录的权限。
示例
 
 
import os

os.chmod('file.txt', 0o755)  # 修改权限为rwxr-xr-x
 

4.3 os.chown(path, uid, gid)

作用:修改文件或目录的所有者和所属组(需要管理员权限)。
示例

import os

os.chown('file.txt', 1000, 1000)  # 修改所有者和所属组为用户ID 1000
 

5. 当前工作目录

5.1 os.getcwd()

作用:返回当前工作目录。
示例

import os

cwd = os.getcwd()
print(cwd)  # 输出:当前工作目录的路径
 

5.2 os.chdir(path)

作用:改变当前工作目录。
示例
 
 
import os

os.chdir('/home/user/documents')  # 将当前工作目录切换到指定路径
 

6. 环境变量

6.1 os.environ

作用:获取环境变量(字典形式)。
示例

import os

print(os.environ['PATH'])  # 输出:系统PATH环境变量的值
 

6.2 os.getenv(key, default=None)

作用:获取指定环境变量的值,若不存在则返回默认值。
示例
 
import os

home_dir = os.getenv('HOME', '/default/path')
print(home_dir)  # 输出:用户主目录路径或默认值
 

7. 执行系统命令

7.1 os.system(command)

作用:执行系统命令,返回命令执行状态(0 表示成功,非 0 表示失败)。
示例

import os

status = os.system('ls -l')  # 执行ls -l命令
print(status)  # 输出命令执行状态
 

8. 高级文件操作

8.1 os.walk(top, topdown=True, onerror=None, followlinks=False)

作用:遍历目录树,返回一个三元组(当前目录路径,子目录列表,文件列表)。
示例

import os

for root, dirs, files in os.walk('/home/user/documents'):
    print(f"当前目录: {root}")
    print(f"子目录: {dirs}")
    print(f"文件: {files}")
    print("-------------------")
 

9. 注意事项

  1. 路径分隔符:不同操作系统使用不同的路径分隔符(Linux 为/,Windows 为\),建议使用os.path.join()自动处理。
  2. 权限问题:某些操作(如os.chown()、删除受保护文件)需要管理员权限。
  3. 异常处理:文件和目录操作可能引发异常(如文件不存在、权限不足),建议使用try-except块进行异常处理。

import os

try:
    os.remove('nonexistent_file.txt')
except FileNotFoundError:
    print("文件不存在")
except PermissionError:
    print("权限不足")

总结

os模块提供了丰富的文件和目录操作方法,能够满足大多数与操作系统交互的需求。在实际开发中,建议结合os.path模块一起使用,以更方便地处理路径相关问题

posted on 2025-11-12 08:37  小陶coding  阅读(41)  评论(0)    收藏  举报