python|100天精通Python(基础篇)——第28天(标准库os)


文章目录

  • 前言
  • 一、os库介绍
  • 二、主要功能
  • 三、系统相关变量和操作
    • 1、os.name
    • 3、os.environ
    • 4、os.sep
    • 5、os.linesep
    • 6、os.getcwd()
  • 四、文件和目录相关操作
    • 1、os.listdir(path)
    • 2、os.mkdir(path)
    • 3、os.rmdir(path)
    • 4、os.remove(path)
    • 4、os.makedirs(dirname)
    • 5、os.removedirs(dirname)
    • 6、os.chdir(path)
    • 7、os.rename(旧名称, 新名称)
  • 五、路径相关操作
    • 1、os.path.basename(path)
    • 2、os.path.dirname(path)
    • 3、os.path.getsize(path)
    • 4、os.path.getctime(path)
    • 5、os.path.getatime(path)
    • 6、os.path.abspath(path)
    • 7、os.path.join(path,name)
    • 8、os.path.exists(path)
    • 9、os.path.isfile(path)
    • 10、os.path.isdir(path)
  • 六、练习
    • 1、递归输出目录结构
    • 2、创建目录

前言
  • 作者介绍:Python领域优质创作者、数据开发工程师
  • 励志成为Python全栈工程师,关注我发现更多精彩~
  • 本文已收录于Python全栈系列专栏:100天精通Python从入门到就业
  • 欢迎订阅,订阅后可私聊进Python全栈交流群(手把手教学,问题解答); 还可领取80GPython全栈教程:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等
  • 加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!
python|100天精通Python(基础篇)——第28天(标准库os)
文章图片

一、os库介绍 os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,这时就离不了os模块,本节内容将对os模块提供的函数进行详细的解读
import os

二、主要功能 1、系统相关变量和操作
2、文件和目录相关操作
3、路径相关操作
三、系统相关变量和操作 1、os.name
返回操作系统类型:Windows 返回nt; Linux 返回posix
>>> import os >>> print(os.name) nt

3、os.environ
返回系统的环境变量
>>> import os >>> print(os.environ) environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\Administrator\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'DESKTOP-P205J2I', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\Administrator', 'LOCALAPPDATA': 'C:\\Users\\Administrator\\AppData\\Local', 'LOGONSERVER': '\\\\DESKTOP-P205J2I', 'NUMBER_OF_PROCESSORS': '4', 'ONEDRIVE': 'C:\\Users\\Administrator\\OneDrive', 'OS': 'Windows_NT', 'PATH': 'C:\\Windows\\system32; C:\\Windows; C:\\Windows\\System32\\Wbem; C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\; C:\\Windows\\System32\\OpenSSH\\; C:\\Program Files\\Microsoft SQL Server\\120\\DTS\\Binn\\; C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\110\\Tools\\Binn\\; C:\\Program Files (x86)\\Microsoft SQL Server\\120\\Tools\\Binn\\; C:\\Program Files\\Microsoft SQL Server\\120\\Tools\\Binn\\; C:\\Program Files (x86)\\Microsoft SQL Server\\120\\Tools\\Binn\\ManagementStudio\\; C:\\Program Files (x86)\\Microsoft SQL Server\\120\\DTS\\Binn\\; D:\\pycharm\\PyCharm Community Edition 2019.2.3\\bin; D:\\MongoDB\\bin; D:\\Python3.8\\Scripts\\; D:\\Python3.8\\; D:\\Python3.9\\Scripts\\; D:\\Python3.9\\; D:\\Python\\Scripts\\; D:\\Python\\; C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\WindowsApps; ; D:\\pycharm\\PyCharm Community Edition 2021.2.3\\bin; ; D:\\Microsoft VS Code\\bin', 'PATHEXT': '.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 60 Stepping 3, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '3c03', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PROMPT': '$P$G', 'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules; C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules; C:\\Program Files (x86)\\Microsoft SQL Server\\120\\Tools\\PowerShell\\Modules\\', 'PUBLIC': 'C:\\Users\\Public', 'PYCHARM COMMUNITY EDITION': 'D:\\pycharm\\PyCharm Community Edition 2021.2.3\\bin; ', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\Windows', 'TEMP': 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp', 'USERDOMAIN': 'DESKTOP-P205J2I', 'USERDOMAIN_ROAMINGPROFILE': 'DESKTOP-P205J2I', 'USERNAME': 'Administrator', 'USERPROFILE': 'C:\\Users\\Administrator', 'WINDIR': 'C:\\Windows', 'WXDRIVE_START_ARGS': '--wxdrive-setting=0 --disable-gpu --disable-software-rasterizer --enable-features=NetworkServiceInProcess'}) # 通过key值获取环境变量对应的value值 >>> print(os.environ.get('PATH')) C:\Windows\system32; C:\Windows; C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0\; C:\Windows\System32\OpenSSH\; C:\Program Files\Microsoft SQL Server\120\DTS\Binn\; C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\; C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\; C:\Program Files\Microsoft SQL Server\120\Tools\Binn\; C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\; C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\; D:\pycharm\PyCharm Community Edition 2019.2.3\bin; D:\MongoDB\bin; D:\Python3.8\Scripts\; D:\Python3.8\; D:\Python3.9\Scripts\; D:\Python3.9\; D:\Python\Scripts\; D:\Python\; C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps; ; D:\pycharm\PyCharm Community Edition 2021.2.3\bin; ; D:\Microsoft VS Code\bin

4、os.sep
返回用于系统路径的分隔符;Windows系统通过是\ , Linux类系统如Ubuntu的分隔符是/
>>> import os >>> print(os.sep) \

5、os.linesep
返回文件换行的分隔符
>>> import os >>> print(os.linesep) '\r\n'

6、os.getcwd()
返回当前工作的目录路径
>>> import os >>> print(os.getcwd()) C:\Users\Administrator

四、文件和目录相关操作 1、os.listdir(path)
返回指定目录下的所有文件和目录名
>>> import os >>> os.listdir(".") # . 表示当前路径 ['.dbshell', '.matplotlib', '.mongorc.js', '.vscode', '3D Objects', 'AppData', 'Application Data', 'Contacts', 'Cookies', 'Desktop', 'Documents', 'Downloads', 'Favorites', 'IntelGraphicsProfiles', 'Links', 'Local Settings', 'Music', 'My Documents', 'NetHood', 'NTUSER.DAT', 'ntuser.dat.LOG1', 'ntuser.dat.LOG2', 'NTUSER.DAT{16f71298-3ac2-11ec-b2cd-f48e38856907}.TM.blf', 'NTUSER.DAT{16f71298-3ac2-11ec-b2cd-f48e38856907}.TMContainer00000000000000000001.regtrans-ms', 'NTUSER.DAT{16f71298-3ac2-11ec-b2cd-f48e38856907}.TMContainer00000000000000000002.regtrans-ms', 'ntuser.ini', 'OneDrive', 'Pictures', 'PrintHood', 'Recent', 'Saved Games', 'Searches', 'SendTo', 'Templates', 'UIDowner', 'Videos', '「开始」菜单']

2、os.mkdir(path)
创建一个目录,只创建一个目录文件。
>>> import os >>> os.mkdir(r"E:\Python_test\test") >>> os.listdir(r"E:\Python_test") ['test', '新建文本文档.txt']

注意:路径r"E:\Python_test\test"前面的 r 表示取消转义效果,可以直接复制Window的文件路径
3、os.rmdir(path)
删除个空目录。 若目录中有文件则无法删除。
>>> import os >>> os.rmdir(r"E:\Python_test\test") >>> os.listdir(r"E:\Python_test") ['新建文本文档.txt']

4、os.remove(path)
删除path指定的文件,不能删除文件夹
>>> import os >>> os.remove(r"E:\Python_test\新建文本文档.txt") >>> os.listdir(r"E:\Python_test") []

4、os.makedirs(dirname)
可以生成多层递归目录。如果目录全部存在,则创建目录失败。
>>> import os >>> os.makedirs(r"E:\Python_test\test\test1") >>> os.listdir(r"E:\Python_test") ['test'] >>> os.listdir(r"E:\Python_test\test") ['test1']

5、os.removedirs(dirname)
可以删除多层递归的空目录,若目录中有文件则无法删除
>>> import os # 案例把Python_test、test、test1目录都删除 >>> os.removedirs(r"E:\Python_test\test\test1") >>> os.listdir(r"E:\Python_test") Traceback (most recent call last): File "", line 1, in FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'E:\\Python_test'

6、os.chdir(path)
切换当前工作的目录路径
>>> import os >>> print(os.getcwd()) C:\Users\Administrator >>> os.chdir(r'E:\Python_demo') >>> print(os.getcwd()) E:\Python_demo

7、os.rename(旧名称, 新名称)
重命令名目录名或者文件名。重命名后的文件名已存在,则重命名失败。
>>> import os E:\Python_test os.rename(r'E:\Python_test\新建文本文档.txt', r'E:\Python_test\测试重命名.txt') >>> os.listdir(r'E:\Python_test') ['测试重命名.txt']

五、路径相关操作 1、os.path.basename(path)
返回文件名
>>> import os >>> os.path.basename(r'E:\Python学习\冰墩墩.py') '冰墩墩.py'

2、os.path.dirname(path)
返回文件路径
>>> os.path.dirname(r'E:\Python学习\冰墩墩.py') 'E:\\Python学习'

3、os.path.getsize(path)
获得文件大小,输出字节,如果name是目录返回0L
>>> import os >>> os.path.getsize(r'E:\Python学习\冰墩墩.py') 7653

4、os.path.getctime(path)
获取文件创建时候的时间戳
>>> import os >>> os.path.getctime(r'E:\Python学习\冰墩墩.py') 1644672351.9997058

5、os.path.getatime(path) 获取文件最后修改时候的时间戳
>>> import os >>> os.path.getatime(r'E:\Python学习\冰墩墩.py') 1644737610.150038

6、os.path.abspath(path)
获得绝对路径
>>> import os >>> os.path.abspath(r'E:\Python学习\冰墩墩.py') 'E:\\Python学习\\冰墩墩.py'

7、os.path.join(path,name)
连接目录与文件名或目录
>>> import os >>> os.path.join(r'E:\Python学习', '冰墩墩.py') 'E:\\Python学习\\冰墩墩.py'

8、os.path.exists(path)
判断文件或者目录是否存在。存在则返回True;否则返回False
>>> import os >>> os.path.exists(r'E:\Python学习\冰墩墩.py') True >>> os.path.exists(r'E:\Python学习') True

9、os.path.isfile(path)
判断是否为文件。是文件则返回True;否则返回False
>>> import os >>> os.path.isfile(r'E:\Python学习\冰墩墩.py') True >>> os.path.isfile(r'E:\Python学习') False

10、os.path.isdir(path) 判断是否为目录。是目录则返回True,否则返回False
>>> import os >>> os.path.isdir(r'E:\Python学习\冰墩墩.py') False >>> os.path.isdir(r'E:\Python学习') True

六、练习 1、递归输出目录结构 需求:求出E:\Python学习目录下的文件结构
【python|100天精通Python(基础篇)——第28天(标准库os)】目录如下:
python|100天精通Python(基础篇)——第28天(标准库os)
文章图片

python|100天精通Python(基础篇)——第28天(标准库os)
文章图片

python|100天精通Python(基础篇)——第28天(标准库os)
文章图片

import osdef recursion_file_catalogue(path, indent=0, maxi=-1): """按字典序递归输出目录结构 :param path: str 文件路径 :param indent: int 首次缩进空格(默认为 0,一般不用改变) :param maxi: int 最大展开层数(默认为 -1,表示全部展开) :return: 文件目录 """ if maxi != 0: try: lsdir = os.listdir(path) except PermissionError:# 对于权限不够的文件不作处理 pass else: for item in lsdir: full_path = os.path.join(path, item) if os.path.isdir(full_path): print(' ' * indent, '+', item) recursion_file_catalogue(full_path, indent + 4, maxi - 1) if os.path.isfile(full_path): print(' ' * indent, '-', item)if __name__ == '__main__': file_path = r'E:\Python学习' print('---按字典序递归输出目录结构---') recursion_file_catalogue(file_path, 0, 2)

输出结果:
---按字典序递归输出目录结构--- + test1 - 1.txt + test2 - 2.txt

2、创建目录 需求:在E:\Python学习\img目录下 可能有图片,把 img目录 删除后重新创建
import ospath = r'E:\Python学习\img' if os.listdir(path): for file in os.listdir(path): os.remove(path + "\\" + file) os.rmdir(path) os.mkdir(path) else: os.rmdir(path) os.mkdir(path)

    推荐阅读