栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录

前言一、os库介绍二、主要功能三、系统相关变量和操作

1、os.name3、os.environ4、os.sep5、os.linesep6、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、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!


一、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:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:WindowsSystem32OpenSSH;C:Program FilesMicrosoft SQL Server120DTSBinn;C:Program FilesMicrosoft SQL ServerClient SDKODBC110ToolsBinn;C:Program Files (x86)Microsoft SQL Server120ToolsBinn;C:Program FilesMicrosoft SQL Server120ToolsBinn;C:Program Files (x86)Microsoft SQL Server120ToolsBinnManagementStudio;C:Program Files (x86)Microsoft SQL Server120DTSBinn;D:pycharmPyCharm Community Edition 2019.2.3bin;D:MongoDBbin;D:Python3.8scripts;D:Python3.8;D:Python3.9scripts;D:Python3.9;D:Pythonscripts;D:Python;C:UsersAdministratorAppDataLocalMicrosoftWindowsApps;;D:pycharmPyCharm Community Edition 2021.2.3bin;;D:Microsoft VS Codebin
4、os.sep

返回用于系统路径的分隔符;Windows系统通过是 , Linux类系统如Ubuntu的分隔符是/

>>> import os
>>> print(os.sep)

5、os.linesep

返回文件换行的分隔符

>>> import os
>>> print(os.linesep)
'rn'
6、os.getcwd()

返回当前工作的目录路径

>>> import os
>>> print(os.getcwd())
C:UsersAdministrator
四、文件和目录相关操作 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_testtest")
>>> os.listdir(r"E:Python_test")
['test', '新建文本文档.txt'] 

注意:路径r"E:Python_testtest"前面的 r 表示取消转义效果,可以直接复制Window的文件路径

3、os.rmdir(path)

删除个空目录。 若目录中有文件则无法删除。

>>> import os
>>> os.rmdir(r"E:Python_testtest")
>>> 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_testtesttest1")
>>> os.listdir(r"E:Python_test")
['test']
>>> os.listdir(r"E:Python_testtest")
['test1']
5、os.removedirs(dirname)

可以删除多层递归的空目录,若目录中有文件则无法删除

>>> import os
# 案例把Python_test、test、test1目录都删除
>>> os.removedirs(r"E:Python_testtesttest1")
>>> 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:UsersAdministrator
>>> 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


def 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 os

path = 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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号