【Python】OS 模块常用方法介绍(附示例解释)——文件\目录\路径\j进程\用户\权限等相关操作

OS 模块方法

  • 1. 前言
  • 2. 文件和目录操作
    • 2.1 获取当前工作目录
    • 2.2 改变当前工作目录
    • 2.3 创建目录
    • 2.4 删除目录
    • 2.5 列出目录内容
    • 2.6 文件与目录重命名
    • 2.7 删除文件
  • 3. 路径操作
    • 3.1 拼接路径
    • 3.2 分割路径
    • 3.3 获取文件或目录的基本名称
    • 3.4 获取文件或目录的父目录
    • 3.5 检查路径是否存在
    • 3.6 检查路径是否为文件
    • 3.7 检查路径是否为目录
    • 3.8 检查路径是否为符号链接(软链接)
    • 3.9 返回绝对路径
  • 4. 进程管理
    • 4.1 获取当前进程ID
    • 4.2 获取父进程ID
    • 4.3 执行系统命令
  • 5. 环境变量操作
    • 5.1 获取环境变量
    • 5.2 设置环境变量
  • 6. 权限与用户
    • 6.1 权限管理
    • 6.2 用户信息

1. 前言

  • os模块是Python标准库中比较重要的一个模块,提供了与操作系统进行交互的功能
  • 可用于文件和目录操作、进程管理、环境变量访问等

2. 文件和目录操作

2.1 获取当前工作目录

  • 语法:os.getcwd()
  • 操作:返回当前Python脚本的工作目录的绝对路径
import os
current_dir = os.getcwd()
print("当前工作目录:",current_dir)

2.2 改变当前工作目录

  • 语法:os.chdir(path)
  • 操作:将当前工作目录更改为指定的路径 path
import os
new_dir = "/path/to/new/directory"
os.chdir(new_dir)
print("更改后的工作路径:",os.getcwd())

2.3 创建目录

创建一个新目录

  • 语法:os.mkdir(path)
  • 操作:创建一个新目录,如果目录已存在则会抛出 FileExistsError 异常

递归创建目录

  • 语法:os.makedirs(path,exist_ok=False)
  • 操作:递归创建目录,即可以创建多级目录。如果 exist_ok 为 True,则当目录已存在时不会抛出异常
import os
# 创建单个目录
os.mkdir("test_dir")

# 递归创建多级目录
os.makedirs("parent_dir/child_dir",exist_ok=True)

2.4 删除目录

删除空目录

  • 语法:os.rmdir(path)
  • 操作:删除指定的空目录,如果目录不为空则抛出 OSError 异常

删除非空目录

  • 语法:shutil.rmtree(path)
  • 操作:如果要删除非空目录,可以使用 shutil 模块的 rmtree 方法

递归删除空目录

  • 语法:os.removedirs(path)
  • 操作:递归删除空目录,从最内层开始删除,直到遇到非空目录停止
import os
import shutil

# 删除空目录
os.rmdir("test_dir")

# 删除非空目录
shutil.rmtree("parent_dir")

# 递归删除空目录
os.removedirs("test_dir")

2.5 列出目录内容

  • 语法:os.listdir(path=‘.’)
  • 操作:返回指定目录下的所有文件和子目录的名称列表,默认是当前目录
import os
files = os.listdir()
print("当前目录下的文件和子目录:",files)

2.6 文件与目录重命名

  • 语法:os.rename(src,dst)
  • 操作:将文件或目录 src 重命名为 dst
import os
os.rename("old_name.txt","new_name.txt")

2.7 删除文件

  • 语法:os.remove(path)
  • 操作:删除指定的文件
import os
os.remove("test_file.txt")

3. 路径操作

3.1 拼接路径

  • 语法:os.path.join(path1,path2,…)
  • 操作:将多个路径组件拼接成一个完整的路径,会根据操作系统自动处理路径分隔符
import os
base_dir = "/home/user"
sub_dir = "documents"
file_name = "example.txt"
full_path = os.path.join(base_dir,sub_dir,file_name)
print("完整路径:",full_path)

3.2 分割路径

  • 语法:os.path.split(path)
  • 操作:分割路径为目录和文件名(返回元组)
import os
path = '/home/user/documents/example.txt'
dir_part, file_part = os.path.split(path)
print(f"目录部分: {dir_part}")
print(f"文件部分: {file_part}")

3.3 获取文件或目录的基本名称

  • 语法:os.path.basename(path)
  • 操作:返回路径的最后一个组件,即文件名或路径名
import os
path = "/home/user/documents/example.txt"
base_name = os.path.basename(path)
print("基本名称:",base_name)

3.4 获取文件或目录的父目录

  • 语法:os.path.dirname(path)
  • 操作:返回路径的目录部分,即父目录的路径
import os
path = "/home/user/documents/example.txt"
dir_name = os.path.dirname(path)
print("父目录:",dir_name)

3.5 检查路径是否存在

  • 语法:os.path.exists(path)
  • 操作:检查指定的路径是否存在,返回布尔值
import os
path = "/home/user/documents/example.txt"
exists = os.path.exists(path)
print("路径是否存在:", exists)

3.6 检查路径是否为文件

  • 语法:os.path.isfile(path)
  • 操作:检查指定的路径是否为文件,返回布尔值
import os
path = "/home/user/documents/example.txt"
is_file = os.path.isfile(path)
print("路径是否为文件:", is_file)

3.7 检查路径是否为目录

  • 语法:os.path.isdir(path)
  • 操作:检查指定的路径是否为目录,返回布尔值
import os
path = "/home/user/documents"
is_dir = os.path.isdir(path)
print("路径是否为目录:", is_dir)

3.8 检查路径是否为符号链接(软链接)

  • 语法:os.path.islink(path)
  • 操作:检查路径是否为符号链接(软链接)
import os
path = "/home/user/documents"
is_link = os.path.islink(path)
print("路径是否为符号链接:", is_link)

3.9 返回绝对路径

  • 语法:os.path.abspath(path)
  • 操作:返回绝对路径
import os
path = "/home/user/documents/example.txt"
abspath = os.path.abspath(path)
print("绝对路径:",abspath)

4. 进程管理

4.1 获取当前进程ID

  • 语法:os.getpid()
  • 操作:返回当前Python进程的进程ID
import os
pid = os.getpid()
print("当前进程id为:",pid)

4.2 获取父进程ID

  • 语法:os.getppid()
  • 操作:返回当前Python进程的父进程的进程ID
import os
ppid = os.getppid()
print("父进程id为:",ppid)

4.3 执行系统命令

  • 语法:os.system(command)
  • 操作:执行系统命令(返回退出状态码)
import os

# 执行 ls 命令,列出当前目录下的文件和文件夹
return_code = os.system('ls')
print(f"命令退出状态码: {return_code}")

5. 环境变量操作

5.1 获取环境变量

  • 语法:os.getenv(key,default=None)
  • 操作:返回指定环境变量 key 的值,如果环境变量不存在,则返回 default
import os
home_dir = os.getenv("HOME")
print("用户主目录:",home_dir)

5.2 设置环境变量

  • 语法:os.environ[key] = value
  • 操作:设置指定环境变量 key 的值为 value
mport os
os.environ["MY_VARIABLE"] = "my_value"
print("设置后的环境变量值:",os.getenv("MY_VARIABLE"))

6. 权限与用户

6.1 权限管理

访问权限

  • 语法:os.access(path, mode)
  • 操作:检查路径的访问权限(os.F_OK存在性,os.R/W/X_OK读写执行权限)
import os

file_path = 'test_script.sh'
readable_and_executable = os.access(file_path, os.R_OK | os.X_OK)
if readable_and_executable:
    print(f"{file_path} 可读且可执行。")
else:
    print(f"{file_path} 不满足可读且可执行的条件。")

修改权限

  • 语法:os.chmod(path, mode)
  • 操作:修改文件/目录权限(八进制模式,如 0o755)
import os

file_path = 'test.txt'
try:
    os.chmod(file_path, 0o755)
    print(f"权限更改成功。")
except PermissionError:
    print("权限不足,无法更改权限。")
except FileNotFoundError:
    print("文件未找到。")

6.2 用户信息

用户ID

  • 语法:os.getuid()
  • 操作:返回当前进程的用户 ID(Unix)
import os

try:
    uid = os.getuid()
    print(f"当前进程的用户 ID 是: {uid}")
    if uid == 0:
        print("当前进程以超级用户(root)身份运行。")
    else:
        print("当前进程以普通用户身份运行。")
except AttributeError:
    print("该系统不支持 os.getuid() 函数,可能是 Windows 系统。")

用户名

  • 语法:os.getlogin()
  • 操作:返回一个字符串,表示当前登录用户的用户名。如果无法获取用户名,会抛出 OSError 异常
import os

try:
    username = os.getlogin()
    print(f"当前登录的用户是: {username}")
except OSError:
    print("无法获取当前登录用户的用户名。")

你可能感兴趣的:(Python学习,python,os,详细介绍,模块方法,开发)