域名解析 网站建设,企业电子商务网站有哪些,网页游戏网站模压板,施工企业管理制度完整版os 模块是 Python 标准库中最强大、功能最丰富的模块之一#xff0c;除了 os.path 外#xff0c;它主要包含以下几大类功能#xff1a;
1. 文件和目录操作
import os# 创建和删除目录
os.mkdir(new_dir) # 创建单个目录
os.makedirs(dir1/dir2/dir3) # 递…os模块是 Python 标准库中最强大、功能最丰富的模块之一除了os.path外它主要包含以下几大类功能1.文件和目录操作importos# 创建和删除目录os.mkdir(new_dir)# 创建单个目录os.makedirs(dir1/dir2/dir3)# 递归创建多级目录os.rmdir(empty_dir)# 删除空目录os.removedirs(a/b/c)# 递归删除空目录# 文件操作os.rename(old.txt,new.txt)# 重命名文件/目录os.remove(file.txt)# 删除文件os.unlink(file.txt)# 删除文件同remove# 目录遍历print(os.listdir(.))# 列出目录内容forroot,dirs,filesinos.walk(.):# 递归遍历目录树forfileinfiles:print(os.path.join(root,file))# 其他操作os.truncate(file.txt,1024)# 截断文件到指定大小os.sync()# 强制将缓冲区写入磁盘2.文件描述符和低级文件操作importos# 使用文件描述符低级I/Ofdos.open(test.txt,os.O_RDWR|os.O_CREAT)# 返回文件描述符os.write(fd,bHello World\n)os.lseek(fd,0,os.SEEK_SET)# 移动文件指针dataos.read(fd,100)# 读取数据os.close(fd)# 关闭文件描述符# 文件描述符操作os.dup(fd)# 复制文件描述符os.dup2(old_fd,new_fd)# 复制到指定描述符os.pipe()# 创建管道返回(r, w)两个描述符# 文件锁importfcntl# 需要单独导入fcntl.flock(fd,fcntl.LOCK_EX)# 排他锁3.进程管理importos# 进程信息print(f进程ID:{os.getpid()})# 当前进程IDprint(f父进程ID:{os.getppid()})# 父进程IDprint(f进程组ID:{os.getpgid(0)})# 进程组IDprint(f会话ID:{os.getsid(0)})# 会话ID# 进程控制pidos.fork()# 创建子进程Unixifpid0:print(子进程)os._exit(0)# 退出子进程else:os.waitpid(pid,0)# 等待子进程结束# 执行系统命令exit_codeos.system(ls -la)# 执行shell命令os.execv(/bin/ls,[ls,-la])# 替换当前进程# 进程信号os.kill(pid,9)# 发送信号给进程os.killpg(pgid,signal.SIGTERM)# 发送信号给进程组4.环境变量和系统信息importos# 环境变量操作print(os.environ)# 所有环境变量的字典print(os.getenv(PATH))# 获取特定环境变量os.environ[MY_VAR]value# 设置环境变量当前进程os.putenv(MY_VAR,value)# 设置环境变量os.unsetenv(MY_VAR)# 删除环境变量# 系统信息print(f操作系统:{os.name})# 操作系统名称posix, nt, javaprint(f当前用户:{os.getlogin()})# 登录用户名print(fCPU数量:{os.cpu_count()})# CPU核心数print(f进程优先级:{os.getpriority(os.PRIO_PROCESS,0)})# 进程优先级5.用户和权限管理importosimportpwd# Unix专用importgrp# Unix专用# 用户和组信息Unixprint(f当前用户ID:{os.getuid()})# 用户IDprint(f当前组ID:{os.getgid()})# 组IDprint(f有效用户ID:{os.geteuid()})# 有效用户IDprint(f有效组ID:{os.getegid()})# 有效组ID# 更改权限os.chmod(file.txt,0o755)# 更改文件权限os.chown(file.txt,1000,1000)# 更改文件所有者Unixos.lchown(symlink,1000,1000)# 更改符号链接所有者# 切换用户上下文需要权限os.setuid(1000)# 设置用户IDos.setgid(1000)# 设置组IDos.initgroups(username,1000)# 初始化组列表6.终端和输入输出importosimportsys# 终端操作print(f终端大小:{os.get_terminal_size()})# 获取终端尺寸print(f是否连接终端:{os.isatty(sys.stdout.fileno())})# 检查是否为终端# 标准输入输出描述符stdin_fdsys.stdin.fileno()# 标准输入文件描述符0stdout_fdsys.stdout.fileno()# 标准输出文件描述符1stderr_fdsys.stderr.fileno()# 标准错误文件描述符2# 重定向# os.dup2(new_fd, stdout_fd) # 重定向标准输出7.资源管理importosimportresource# 需要单独导入# 资源限制resource.getrlimit(resource.RLIMIT_CPU)# CPU时间限制resource.getrlimit(resource.RLIMIT_DATA)# 数据段大小限制resource.getrlimit(resource.RLIMIT_STACK)# 栈大小限制resource.getrlimit(resource.RLIMIT_NOFILE)# 文件描述符数量限制# 设置资源限制resource.setrlimit(resource.RLIMIT_NOFILE,(1024,4096))# 获取资源使用情况usageresource.getrusage(resource.RUSAGE_SELF)print(f用户CPU时间:{usage.ru_utime})print(f系统CPU时间:{usage.ru_stime})print(f最大内存使用:{usage.ru_maxrss})8.时间和统计信息importosimporttime# 文件状态信息stat_infoos.stat(file.txt)print(f文件大小:{stat_info.st_size}字节)print(f最后修改:{time.ctime(stat_info.st_mtime)})print(f最后访问:{time.ctime(stat_info.st_atime)})print(f创建时间:{time.ctime(stat_info.st_ctime)})# Unix: 最后元数据更改# 特殊文件操作os.utime(file.txt,timesNone)# 更新访问和修改时间os.makedev(major,minor)# 创建设备号Unixos.major(device)# 获取主设备号os.minor(device)# 获取次设备号9.高级系统调用importos# 内存映射importmmapwithopen(data.bin,rb)asf:mmmmap.mmap(f.fileno(),0)mm[0:100]bX*100mm.close()# 共享内存Unix# shm_fd os.shm_open(/myshm, os.O_CREAT | os.O_RDWR, 0o600)# os.ftruncate(shm_fd, 1024)# 异步I/Oos.posix_fadvise(fd,offset,length,os.POSIX_FADV_WILLNEED)# 预读建议os.sync_file_range(fd,offset,length,os.SYNC_FILE_RANGE_WRITE)# 同步文件范围10.平台特定功能importosimportsys# 检查平台ifos.nameposix:# Unix/Linux/Mac 特定功能importpwdimportgrpelifos.nament:# Windows 特定功能importwinregimportctypes# Windows API 调用ctypes.windll.kernel32.SetConsoleTitleW(My Console)# Windows 特殊路径print(os.startfile(document.pdf))# 用关联程序打开文件os.system(start explorer .)# 打开资源管理器# 跨平台路径处理除了os.pathprint(os.sep)# 路径分隔符Unix: /, Windows: \print(os.altsep)# 替代路径分隔符Unix: None, Windows: /print(os.extsep)# 扩展名分隔符.print(os.pathsep)# PATH环境变量分隔符Unix: :, Windows: ;print(os.defpath)# 默认搜索路径print(os.devnull)# 空设备路径Unix: /dev/null, Windows: nul11.杂项实用功能importos# 随机数生成random_bytesos.urandom(16)# 加密安全的随机字节random_numberos.random()# 随机数已弃用建议用random模块# 临时文件和目录importtempfile temp_filetempfile.NamedTemporaryFile(deleteFalse)temp_dirtempfile.mkdtemp()# 工作目录操作current_diros.getcwd()# 获取当前工作目录os.chdir(/path/to/dir)# 更改工作目录print(f绝对路径:{os.path.abspath(.)})# 特殊常量print(f行结束符:{repr(os.linesep)})# 系统行结束符print(f路径分隔符:{repr(os.sep)})# 路径分隔符# 系统错误try:os.remove(nonexistent.txt)exceptOSErrorase:print(f错误号:{e.errno})print(f错误信息:{e.strerror})print(f文件名:{e.filename})12.完整功能分类表类别主要函数/功能说明文件操作open(),read(),write(),close()低级文件I/O目录操作mkdir(),makedirs(),rmdir(),listdir(),walk()目录管理进程管理fork(),exec(),wait(),kill(),getpid()进程控制环境变量environ,getenv(),putenv(),unsetenv()环境变量操作用户权限getuid(),getgid(),chmod(),chown()用户和权限系统信息name,uname(),cpu_count(),getlogin()系统信息路径常量sep,altsep,pathsep,linesep平台相关常量终端操作get_terminal_size(),isatty()终端控制资源管理与resource模块配合系统资源限制特殊设备devnull,makedev(),major(),minor()设备操作13.实战示例创建守护进程importosimportsysimporttimeimportatexitimportsignaldefdaemonize(pidfileNone):将当前进程转换为守护进程# 第一次fork创建子进程父进程退出try:pidos.fork()ifpid0:sys.exit(0)# 退出父进程exceptOSErrorase:sys.stderr.write(f第一次fork失败:{e}\n)sys.exit(1)# 脱离终端控制os.chdir(/)# 更改工作目录到根os.setsid()# 创建新会话os.umask(0)# 重设文件掩码# 第二次fork禁止进程重新打开控制终端try:pidos.fork()ifpid0:sys.exit(0)exceptOSErrorase:sys.stderr.write(f第二次fork失败:{e}\n)sys.exit(1)# 重定向标准文件描述符sys.stdout.flush()sys.stderr.flush()# 写入PID文件ifpidfile:withopen(pidfile,w)asf:f.write(str(os.getpid()))# 注册退出时删除PID文件atexit.register(lambda:os.remove(pidfile))# 守护进程主循环whileTrue:# 这里写守护进程的工作time.sleep(1)if__name____main__:daemonize(/tmp/mydaemon.pid)敲黑板os模块是 Python 与操作系统交互的核心接口它提供了跨平台抽象统一不同操作系统的API底层访问直接调用系统调用资源管理进程、文件、内存等系统资源管理系统信息获取和操作系统相关的各种信息关键要点os.path只是os模块的一个子模块专门处理路径os模块的许多函数在不同平台上行为可能不同对于高级文件操作通常使用内置的open()函数对于进程管理现代Python更推荐使用subprocess模块注意权限问题很多os函数需要相应的系统权限