Python os 模块简述

发布时间 2023-06-17 09:38:33作者: 晓枫的春天

os 模块简介

os就是“operating system”的缩写,顾名思义,os模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页也可以极大增强代码的可移植性。如果该模块中相关功能出错,会抛出OSError异常或其子类异常。

import os

os 模块主要功能

  • 系统相关变量操作
  • 文件和目录操作
  • 路径相关操作

系统相关变量操作

os.name

该属性宽泛地指明了当前 Python 运行所在的环境,实际上是导入的操作系统相关模块的名称。这个名称也决定了模块中哪些功能是可用的,哪些是没有相应实现的。目前有效名称为以下三个:posixntjava。其中posix是 Portable Operating System Interface of UNIX(可移植操作系统接口)的缩写。Linux 和 Mac OS 均会返回该值;nt全称应为“Microsoft Windows NT”,大体可以等同于 Windows 操作系统,因此 Windows 环境下会返回该值;java则是 Java 虚拟机环境下的返回值。因此在我的电脑(win10)上执行下述代码,返回值是nt

import os
print(os.name)
nt

os.environ

返回系统环境变量

print(os.environ)#environ({'4A_JSON': '{"goldbank_ver":"1.0.0.2","url":"http://10.245.7.203:8080/uac/update/"}', 'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPCODE_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\appcode.vmoptions', 'APPDATA': 'C:\\Users\\admin\\AppData\\Roaming', 'CLION_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\clion.vmoptions', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'DESKTOP-LB4N9RT', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'CRT_HOME': 'E:\\Tools\\work_tools\\SecureCRT\\SecureCRT.exe', 'DATAGRIP_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\datagrip.vmoptions', 'DATASPELL_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\dataspell.vmoptions', 'DEVECOSTUDIO_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\devecostudio.vmoptions', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'GATEWAY_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\gateway.vmoptions', 'GOLAND_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\goland.vmoptions', 'HADOOP_HOME': 'E:\\Tools\\hadoop-3.1.0', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\admin', 'IDEA_INITIAL_DIRECTORY': 'D:\\tool\\PyCharm 2020.2.2\\bin', 'IDEA_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\idea.vmoptions', 'JAVA_HOME': 'E:\\Tools\\work_tools\\jdk1.8', 'JETBRAINSCLIENT_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\jetbrainsclient.vmoptions', 'JETBRAINS_CLIENT_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\jetbrains_client.vmoptions', 'LOCALAPPDATA': 'C:\\Users\\admin\\AppData\\Local', 'LOGONSERVER': '\\\\DESKTOP-LB4N9RT', 'M2_HOME': 'E:\\Tools\\work_tools\\apache-maven-3.3.9', 'NLS_LANG': 'SIMPLIFIED CHINESE_AMERICA.ZHS16GBK', 'NUMBER_OF_PROCESSORS': '4', 'ONEDRIVE': 'C:\\Users\\admin\\OneDrive', 'ONEDRIVECONSUMER': 'C:\\Users\\admin\\OneDrive', 'OS': 'Windows_NT', 'PATH': 'E:\\worksp_py\\hardwary\\venvop\\Scripts;C:\\Program Files\\Common Files\\Oracle\\Java\\javapath;D:\\tool\\vm\\bin\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;E:\\Tools\\work_tools\\apache-maven-3.3.9\\bin;E:\\Tools\\work_tools\\jdk1.8\\bin;E:\\Tools\\work_tools\\scala-2.12.12\\bin;E:\\Tools\\hadoop-3.1.0\\bin;E:\\Tools\\work_tools\\Git;E:\\Tools\\work_tools\\Git\\mingw64\\bin;E:\\Tools\\work_tools\\Git\\mingw64\\libexec\\git-core;E:\\Tools\\comm_tools\\calibre\\;D:\\tool\\python3.8\\Scripts\\;D:\\tool\\python3.8\\;C:\\Users\\admin\\AppData\\Local\\Microsoft\\WindowsApps', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'PHPSTORM_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\phpstorm.vmoptions', 'PLSQL_HOME': 'D:\\tool\\PLSQL Developer\\plsqldev.exe', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 142 Stepping 9, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '8e09', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PROMPT': '(venvop) $P$G', 'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules', 'PUBLIC': 'C:\\Users\\Public', 'PYCHARM_DISPLAY_PORT': '63342', 'PYCHARM_HOSTED': '1', 'PYCHARM_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\pycharm.vmoptions', 'PYTHONIOENCODING': 'UTF-8', 'PYTHONPATH': 'E:\\worksp_py\\hardwary;D:\\tool\\PyCharm 2020.2.2\\plugins\\python\\helpers\\pycharm_matplotlib_backend;D:\\tool\\PyCharm 2020.2.2\\plugins\\python\\helpers\\pycharm_display', 'PYTHONUNBUFFERED': '1', 'RIDER_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\rider.vmoptions', 'RUBYMINE_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\rubymine.vmoptions', 'SCALA_HOME': 'E:\\Tools\\work_tools\\scala-2.12.12', 'SESSIONNAME': 'Console', 'SFTP_HOME': 'E:\\Tools\\work_tools\\winscp432\\WinSCP\\WinSCP.exe', 'STUDIO_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\studio.vmoptions', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\Windows', 'TEMP': 'C:\\Users\\admin\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\admin\\AppData\\Local\\Temp', 'TNS_ADMIN': 'C:\\instantclient_11_2', 'TNS_HOME': 'C:\\instantclient_11_2\\TNSNAMES.ORA', 'USERDOMAIN': 'DESKTOP-LB4N9RT', 'USERDOMAIN_ROAMINGPROFILE': 'DESKTOP-LB4N9RT', 'USERNAME': 'admin', 'USERPROFILE': 'C:\\Users\\admin', 'VIRTUAL_ENV': 'E:\\worksp_py\\hardwary\\venvop', 'WEBIDE_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\webide.vmoptions', 'WEBSTORM_VM_OPTIONS': 'E:\\Tools\\work_tools\\jetbra\\vmoptions\\webstorm.vmoptions', 'WINDIR': 'C:\\Windows', '_OLD_VIRTUAL_PATH': 'C:\\Program Files\\Common Files\\Oracle\\Java\\javapath;D:\\tool\\vm\\bin\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;E:\\Tools\\work_tools\\apache-maven-3.3.9\\bin;E:\\Tools\\work_tools\\jdk1.8\\bin;E:\\Tools\\work_tools\\scala-2.12.12\\bin;E:\\Tools\\hadoop-3.1.0\\bin;E:\\Tools\\work_tools\\Git;E:\\Tools\\work_tools\\Git\\mingw64\\bin;E:\\Tools\\work_tools\\Git\\mingw64\\libexec\\git-core;E:\\Tools\\comm_tools\\calibre\\;D:\\tool\\python3.8\\Scripts\\;D:\\tool\\python3.8\\;C:\\Users\\admin\\AppData\\Local\\Microsoft\\WindowsApps', '_OLD_VIRTUAL_PROMPT': '$P$G'})
print(os.environ.get('PATH'))#E:\worksp_py\hardwary\venvop\Scripts;C:\Program Files\Common Files\Oracle\Java\javapath;D:\tool\vm\bin\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;E:\Tools\work_tools\apache-maven-3.3.9\bin;E:\Tools\work_tools\jdk1.8\bin;E:\Tools\work_tools\scala-2.12.12\bin;E:\Tools\hadoop-3.1.0\bin;E:\Tools\work_tools\Git;E:\Tools\work_tools\Git\mingw64\bin;E:\Tools\work_tools\Git\mingw64\libexec\git-core;E:\Tools\comm_tools\calibre\;D:\tool\python3.8\Scripts\;D:\tool\python3.8\;C:\Users\admin\AppData\Local\Microsoft\WindowsApps

os.sep

返回系统分隔符

print(os.sep) #\

os.linesep

返回文件换行分隔符

print(os.linesep) #\r\n

os.getcwd()

返回当前工作路径

print(os.getcwd()) #E:\worksp_py\hardwary\100day\thirty

文件相关操作

os.listdir(dirpath)

返回 dirpath 目录下所有文件和目录名

print(os.listdir('.')) #['ostest01.py', '__init__.py']

os.mkdir(dirname)

创建目录

os.mkdir(r"E:\worksp_py\os_test")
print(os.listdir(r"E:\worksp_py"))
#['.idea', 'hardwary', 'hello_world.py', 'langchain', 'leetcode', 'mooc', 'myhard', 'os_test', 'test.py', 'testnumpy']

这里的 r 表示取消转义效果

os.rmdir(path)

删除空目录,若目录下有内容无法删除

os.rmdir(r"E:\worksp_py\os_test")
print(os.listdir(r"E:\worksp_py"))
#['.idea', 'hardwary', 'hello_world.py', 'langchain', 'leetcode', 'mooc', 'myhard', 'test.py', 'testnumpy']

os.remove(path)

删除path下的文件,不能删除目录

os.remove(r"E:\worksp_py\hello_world.py")
print(os.listdir(r"E:\worksp_py"))
#['.idea', 'hardwary', 'langchain', 'leetcode', 'mooc', 'myhard', 'test.py', 'testnumpy']

os.makedirs(diename)

可以递归创建目录,若目录全部存在,则创建失败

os.makedirs(r"E:\worksp_py\os_test\test_sub")
print(os.listdir(r"E:\worksp_py"))
#['.idea', 'hardwary', 'langchain', 'leetcode', 'mooc', 'myhard', 'os_test', 'test.py', 'testnumpy']
print(os.listdir(r"E:\worksp_py\os_test"))
#['test_sub']

os.removedirs(dirname)

递归删除空目录,如有文件无法删除

os.removedirs(r"E:\worksp_py\os_test\test_sub")

os.chdir

切换当前工作路径

print(os.getcwd())
#E:\worksp_py\hardwary\100day\thirty
os.chdir(r"E:\worksp_py\hardwary\100day")
print(os.getcwd())
#E:\worksp_py\hardwary\100day

os.rename(oldname,newname)

重命名

print(os.listdir(r"E:\worksp_py"))
#E:\worksp_py\hardwary\100day
os.rename(r"E:\worksp_py\test.py",r"E:\worksp_py\test-123.py")
print(os.listdir(r"E:\worksp_py"))
['.idea', 'hardwary', 'langchain', 'leetcode', 'mooc', 'myhard', 'os_test', 'test.py', 'testnumpy']
['.idea', 'hardwary', 'langchain', 'leetcode', 'mooc', 'myhard', 'os_test', 'test-123.py', 'testnumpy']

路径相关操作

os.path.dirname(path)

返回目录名

print(os.path.dirname(r"E:\worksp_py\test-123.py"))
#E:\worksp_py

os.path.basename(path)

print(os.path.basename(r"E:\worksp_py\test-123.py"))
#test-123.py

os.path.getsize(path)

返回文件大小,单位字节,若路径是目录食醋胡 4096

print(os.path.getsize(r"E:\worksp_py\test-123.py"))
#12
print(os.path.getsize(r"E:\worksp_py\hardwary"))
#4096

os.path.getctime(path)、os.getatime(path)

获取文件创建时的时间戳,最后一次修改的时间戳

print(os.path.getctime(r"E:\worksp_py\test-123.py"))
#1657867424.3657622
print(os.path.getatime(r"E:\worksp_py\test-123.py"))
#1685172723.6382494

os.path.abspath(path)

获取绝对路径

print(os.path.abspath('.'))
#E:\worksp_py\hardwary\100day\thirty

os.path.join(path,name)

print(os.path.join(r"E:\worksp_py","test-123.py"))
#E:\worksp_py\test-123.py

os.path.exists(path)

判断目录是否存在

print(os.path.exists(r"E:\worksp_py\hardwary\100day\thirty"))
print(os.path.exists(r"E:\worksp_py\hardwary\100day\thirty33"))
True
False

os.path.isfile(path)

判断是否为文件

print(os.path.isfile(r"E:\worksp_py\hardwary\100day\thirty"))
print(os.path.iffile(r"E:\worksp_py\hardwary\100day\thirty\__init__.py"))
False
True

os.path.isdir(path)

判断是否目录