Python教学-最常用的标准库之一——OS库

os 库是 Python 标准库中的一个模块,它提供了一种方便的方式来使用操作系统相关的功能。os 模块提供了很多函数,可以用来处理文件和目录、访问环境变量、执行系统命令等。以下是一些常用的 os 模块的功能和示例:

1. 文件和目录操作

1.1 当前工作目录
  • os.getcwd():获取当前工作目录。
  • os.chdir(path):改变当前工作目录。
  • import os
    
    current_dir = os.getcwd()
    print("当前工作目录:", current_dir)
    
    os.chdir('/path/to/new/directory')
    new_dir = os.getcwd()
    print("改变后的工作目录:", new_dir)
    
    1.2 创建和删除目录
  • os.mkdir(path):创建单个目录。
  • os.makedirs(path, exist_ok=False):递归创建目录。如果 exist_ok=True,目录已存在时不报错。
  • os.rmdir(path):删除单个空目录。
  • os.removedirs(path):递归删除目录。
  • os.makedirs('dir1/dir2', exist_ok=True)
    os.rmdir('dir1/dir2')  # 只能删除空目录
    os.removedirs('dir1/dir2')  # 递归删除
    
    1.3 列出目录内容
  • os.listdir(path):列出指定目录下的所有文件和目录。
  • files_and_dirs = os.listdir('.')
    print("当前目录下的文件和目录:", files_and_dirs)
    
    1.4 文件路径操作
  • os.path.join(path, *paths):智能拼接路径。
  • os.path.abspath(path):获取绝对路径。
  • os.path.dirname(path):获取目录名。
  • os.path.basename(path):获取文件名。
  • os.path.exists(path):检查路径是否存在。
  • os.path.isfile(path):检查路径是否为文件。
  • os.path.isdir(path):检查路径是否为目录。
  • os.path.getsize(path):获取文件大小(字节)。
  • full_path = os.path.join('dir1', 'file.txt')
    abs_path = os.path.abspath(full_path)
    dir_name = os.path.dirname(abs_path)
    file_name = os.path.basename(abs_path)
    print("完整路径:", full_path)
    print("绝对路径:", abs_path)
    print("目录名:", dir_name)
    print("文件名:", file_name)
    print("路径是否存在:", os.path.exists(abs_path))
    print("是否为文件:", os.path.isfile(abs_path))
    print("是否为目录:", os.path.isdir(dir_name))
    if os.path.isfile(abs_path):
        print("文件大小:", os.path.getsize(abs_path), "字节")
    

    2. 环境变量

  • os.getenv(key, default=None):获取环境变量的值,如果不存在则返回 default
  • os.environ:获取一个包含所有环境变量的字典。
  • os.putenv(key, value):设置环境变量(仅在某些平台上有效,建议使用 os.environ)。
  • os.unsetenv(key):删除环境变量(仅在某些平台上有效)。
  • # 获取环境变量
    home_dir = os.getenv('HOME')
    print("HOME 环境变量:", home_dir)
    
    # 设置环境变量
    os.environ['MY_VAR'] = 'my_value'
    print("MY_VAR 环境变量:", os.getenv('MY_VAR'))
    
    # 删除环境变量(仅在支持 unsetenv 的平台上有效)
    # os.unsetenv('MY_VAR')
    

    3. 执行系统命令

  • os.system(command):在子终端执行系统命令。
  • os.popen(cmd, mode='r', buffering=-1):打开一个管道连接到或从一个命令。
  • subprocess 模块:更强大和灵活的子进程管理模块,建议使用 subprocess 代替 os.systemos.popen
  • # 使用 os.system 执行命令
    exit_code = os.system('ls -l')
    print("命令执行后的退出码:", exit_code)
    
    # 使用 os.popen 执行命令并读取输出
    process = os.popen('ls -l')
    output = process.read()
    print("命令输出:\n", output)
    process.close()
    

    4. 文件和目录权限

  • os.chmod(path, mode):改变文件或目录的权限。
  • os.chown(path, uid, gid):改变文件或目录的所有者和组(仅在 Unix 上有效)。
  • # 假设你有一个文件 'file.txt'
    # os.chmod('file.txt', 0o755)  # 设置文件权限为 rwxr-xr-x
    

    5. 临时文件和目录

  • tempfile.TemporaryFile():创建一个临时文件,文件关闭后会自动删除。
  • tempfile.NamedTemporaryFile():创建一个命名临时文件,文件关闭后会自动删除。
  • tempfile.mkdtemp():创建一个临时目录,可以手动删除。
  • tempfile.TemporaryDirectory():创建一个临时目录,目录关闭后会自动删除。
  • import tempfile
    
    # 创建一个临时文件
    with tempfile.TemporaryFile() as temp_file:
        temp_file.write(b'Hello, World!')
        temp_file.seek(0)
        print(temp_file.read())
    
    # 创建一个命名临时文件
    with tempfile.NamedTemporaryFile(delete=False) as named_temp_file:
        temp_file_name = named_temp_file.name
        print("命名临时文件:", temp_file_name)
        # 可以手动删除文件
        # os.remove(temp_file_name)
    
    # 创建一个临时目录
    temp_dir = tempfile.mkdtemp()
    print("临时目录:", temp_dir)
    # 可以手动删除目录
    # os.rmdir(temp_dir) 或 os.removedirs(temp_dir) 如果是递归创建的
    
    # 创建一个自动删除的临时目录
    with tempfile.TemporaryDirectory() as temp_dir_ctx:
        print("自动删除的临时目录:", temp_dir_ctx)
    

    这些只是 os 模块中的一些基本功能,实际上 os 模块的功能非常丰富,适用于各种操作系统相关的任务。如果需要更复杂的子进程管理,建议查阅 subprocess 模块。

    作者:懒大王爱吃狼

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python教学-最常用的标准库之一——OS库

    发表回复