0


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

文章目录

前言

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

在这里插入图片描述

一、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 "<stdin>", line 1,in<module>
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学习

目录下的文件结构

目录如下:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

import os

defrecursion_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:# 对于权限不够的文件不作处理passelse: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 os

path = r'E:\Python学习\img'if os.listdir(path):forfilein os.listdir(path):
        os.remove(path +"\\"+file)
    os.rmdir(path)
    os.mkdir(path)else:
    os.rmdir(path)
    os.mkdir(path)
标签: python 列表 元组

本文转载自: https://blog.csdn.net/yuan2019035055/article/details/123201092
版权归原作者 小袁ITSuper 所有, 如有侵权,请联系我们删除。

“100天精通Python(基础篇)&mdash;&mdash;第28天:标准库os”的评论:

还没有评论