一、os库:操作系统的好帮手

嘿,小伙伴们!今天我要给大家介绍一个超级厉害的库——os库!它就像是操作系统的好帮手,提供了各种各样的功能接口函数,让我们在Python编程中能够轻松应对不同的操作系统平台。

你知道吗,os库就像是一位多面手,它能够根据不同的操作系统平台,灵活地进行各种操作。无论是和文件打交道,还是和目录打交道,os库都能给我们提供强大的支持。

os库的神奇功能

  • 文件操作:os库可以帮助我们进行各种各样的文件操作。比如,我们可以使用os.rename()函数来重命名文件,就像给它换了一个新名字一样。而os.remove()函数则可以帮助我们删除文件,就像是把它从电脑里面消失了一样。

  • 目录操作:os库还可以帮助我们进行目录操作。比如,我们可以使用os.mkdir()函数来创建一个新的目录,就像是在电脑里面建了一个新房子一样。而os.rmdir()函数则可以帮助我们删除一个目录,就像是把这个房子给拆了一样。

  • 路径操作:os库还可以帮助我们进行路径操作。比如,我们可以使用os.path.join()函数来拼接路径,就像是把多个小路连接成一条大道一样。而os.path.exists()函数则可以帮助我们判断路径是否存在,就像是在寻找宝藏一样。

通过使用os库,我们可以轻松地进行文件操作、目录操作和路径操作。它就像是一位操作系统的好帮手,为我们提供了丰富的功能接口函数。无论是重命名文件、创建目录,还是拼接路径,os库都能够帮助我们完成任务。

所以,小伙伴们,赶快学习和使用os库吧!它会让你的Python编程之旅更加顺利和有趣!记得多多尝试,发现更多os库的神奇功能哦!加油!

二、主要功能

1、系统相关变量和操作

2、文件和目录相关操作

3、路径相关操作

三、系统相关变量和操作

1、os.name

这个函数就像是一个操作系统的"身份证",告诉你它是什么类型的。如果它是Windows,那它会自豪地说:“嘿,我是nt!”如果它是Linux,它会自豪地说:“嘿,我是posix!”所以,你可以使用os.name来获取操作系统的类型。

>>> import os
>>> print(os.name)
nt

2、os.environ

os.environ就像是一个大杂货店,里面存放着系统的各种环境变量。你可以通过这个特殊的变量来获取和操作系统环境相关的信息。

想象一下,你走进了一个巨大的杂货店,货架上摆满了各种各样的商品。每个商品都有一个标签,告诉你它的名字和价格。在这个杂货店中,os.environ就像是货架上的标签,它存储着系统环境变量的名字和对应的值。

你可以使用os.environ来获取系统环境变量的值,就像是从货架上取下商品一样简单。只需要提供变量的名字,os.environ就会帮你找到对应的值。

import os

# 获取系统环境变量的值
value = os.environ.get('变量名')

# 打印出来看看
print(value)

当然,你也可以像在杂货店里添加新商品一样,通过os.environ来设置系统环境变量的值。只需要提供变量的名字和对应的值,os.environ就会帮你把它们放到正确的位置。

import os

# 设置系统环境变量的值
os.environ['变量名'] = '值'

所以,os.environ就像是一个方便的工具,让你能够轻松地获取和设置系统环境变量。无论你是想获取当前操作系统的用户名,还是想设置一个新的环境变量,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

3、os.sep

它就像是操作系统的分隔符界的大使,帮助我们在不同的操作系统之间建立友好的沟通。

想象一下,Windows系统就像是一个迷宫,里面有许多小巷和弯弯曲曲的道路,而它的分隔符就像是迷宫中的墙壁,用来分隔路径的不同部分。这个分隔符就是\,它就像是一条小溪,一路蜿蜒流淌。

而Linux系统则像是一个开放的大草原,没有太多的障碍物,路径的分隔符就是/,就像是一条小河,自由自在地穿过山谷。

当我们编写代码时,为了让我们的代码在不同的操作系统上都能正常运行,我们可以使用os.sep来获取当前操作系统的路径分隔符。这样,我们就可以像一个聪明的导游一样,根据不同的国家,使用正确的分隔符,让我们的代码在各个操作系统上都能顺利行走!

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

4、os.linesep

在Python中,我们经常需要处理文件,而文件中的换行符是一个很重要的细节。这就像是一条看不见的河流,将文件分割成了一行一行的小岛。而os.linesep就是帮助我们找到这个看不见的河流的工具。

想象一下,你正在读一本书,每一页都有一个小小的断点,让你知道何时换行。这个断点就是os.linesep。它会告诉你在不同的操作系统中,换行是如何表示的。

在Windows系统中,换行被表示为两个字符:回车符(carriage return)和换行符(line feed)。就像是一对默契的舞伴,它们一起工作,让你的文字在屏幕上优雅地换行。

而在Unix和Linux系统中,换行只需要一个字符:换行符。就像是一个独行侠,它独自一人完成了换行的任务。

所以,当你使用os.linesep时,它会根据你所在的操作系统,返回正确的换行符。这样,你就可以在不同的系统上愉快地读写文件,而不用担心换行的问题了。

让我们感谢os.linesep,这个默默无闻的函数,为我们的文件操作提供了便利。它就像是一位可靠的导航员,帮助我们在文件的大海中航行,找到正确的航线。

>>> import os
>>> print(os.linesep)
'\r\n'

5、os.getcwd()

这个函数就像是一个导航仪,它告诉你当前你所处的工作目录是哪里。就像你在迷宫中迷失了方向,os.getcwd()就是你的指南针,指引你回到起点。

使用这个函数,你可以轻松地获取当前工作目录的路径。无论你是在哪个文件夹下工作,os.getcwd()都能准确地告诉你当前所在的位置。

就像是一张地图,os.getcwd()为你提供了一个清晰的路径,让你知道你在代码的世界中的具体位置。这样,你就能更好地组织和管理你的文件和文件夹了。

所以,记住,当你迷失在代码的海洋中时,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)

这个函数就像是一个专门负责清理空房间的保洁员。它的任务是删除一个空目录,就像保洁员清理一个没有杂物的房间一样。但是,如果目录里面还有文件,这个保洁员就无能为力了,就像他无法清理一个堆满杂物的房间一样。所以,在使用这个函数之前,记得先把目录里面的文件清理干净哦!

希望这个比喻能够让你更好地理解 os.rmdir(path) 函数的作用和限制。记得在使用这个函数之前,先确保目录是空的哦!

>>> import os
>>> os.rmdir(r"E:\Python_test\test")
>>> os.listdir(r"E:\Python_test")
['新建文本文档.txt']

4、os.remove(path)

这个函数就像是一个无情的刽子手,它只会删除文件,而对文件夹则视而不见。就像是一把锋利的剑,它只能斩断文件的生命线,而无法触及文件夹的根基。

当你调用os.remove()函数时,你必须小心翼翼,因为它会毫不留情地删除你指定的文件。就像是一位冷酷无情的刽子手,它会将文件从你的计算机上彻底抹去,不留任何痕迹。

但是,这个函数是有原则的,它只对文件有效。就像是一位专业的刽子手,它只会对待文件,而对文件夹则视而不见。所以,如果你试图删除一个文件夹,它会像是一位盲目的刽子手,对你的请求置若罔闻。

记住,使用os.remove()函数时要小心,确保你只删除了你想要删除的文件,而不是无辜的文件夹。毕竟,我们不希望这位刽子手误伤了无辜的人,对吧?

>>> 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)

这个函数就像是一个导航仪,它可以帮助你在Python的世界中找到正确的路径!它可以让你轻松切换当前工作的目录路径,就像是在迷宫中找到正确的出口一样。

使用os.chdir(path)函数,你可以告诉Python你想要前往的目录路径。它就像是一辆魔法车,可以带你到达你想去的地方。无论你是想去海边还是山顶,只需告诉它目的地的路径,它就会带你到达那里。

这个函数非常有用,特别是当你需要在不同的文件夹之间切换时。它就像是一个超级英雄的传送门,可以让你在不同的世界中自由穿梭。

所以,如果你想要改变当前工作的目录路径,就记得使用os.chdir(path)函数,它会帮助你找到正确的方向,让你的Python之旅更加顺利!

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

path = "/home/user/documents/myfile.txt"
filename = os.path.basename(path)
print("文件名是:", filename)

输出结果将会是:

文件名是: myfile.txt

看到了吗?这个函数就像是一个魔术师一样,轻松地把文件名“变”了出来!让我们一起为这个函数鼓掌吧!🎩🐇👏

Windows操作:

>>> import os
>>> os.path.basename(r'E:\Python学习\冰墩墩.py')
'冰墩墩.py'

2、os.path.dirname(path)

这个函数就像是一个导航员,它会告诉你如何回到文件的家你只需要给它一个文件路径,它就会返回这个文件所在的文件夹路径。

想象一下,你在迷宫中迷失了方向,不知道如何回到起点。这时,导航员出现了!他会告诉你应该往哪个方向走,才能回到起点。os.path.dirname() 就是你的导航员,它会指引你回到文件的家。

使用这个函数非常简单,只需要将文件路径作为参数传递给它,它就会返回文件所在的文件夹路径。这样,你就能轻松找到文件的家了!

让我们来看个例子吧:

import os

file_path = "/home/user/documents/file.txt"
folder_path = os.path.dirname(file_path)

print("文件所在的文件夹路径是:", folder_path)

输出结果将会是:

文件所在的文件夹路径是: /home/user/documents

现在你知道如何使用 os.path.dirname() 函数了,就像有了一个可靠的导航员,帮助你找到文件的家一样!

Windows操作:

>>> os.path.dirname(r'E:\Python学习\冰墩墩.py')
'E:\\Python学习'

3、os.path.getsize(path)

这个函数就像是一个侦探,它可以帮你找到文件的“体重”。它会告诉你文件有多重,以字节为单位。但是,如果你给它一个目录的名字,它会开玩笑地告诉你这个目录是零重量级的,就像是一个空气球一样。

希望这个比喻能够帮助你更好地理解这个函数的作用。记住,它只能告诉你文件的大小,而不是文件的内容。所以,不要期望它能告诉你文件里面有多少文字或者图片。它只是一个简单的“体重计”,专门用来测量文件的大小。

>>> 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)

这个函数就像是一位导航员,它能帮你找到路径的终点,告诉你如何到达目的地。

使用os.path.abspath(path)函数,你可以获得给定路径的绝对路径。它会将相对路径转换为绝对路径,就像是将一张地图上的标记点转化为真实的地理坐标。

这个函数就像是一位导航员,它会帮你找到路径的终点,告诉你如何到达目的地。无论你在哪里,它都能帮你确定你所在的位置,并指引你到达目标地点。

让我们来看一个例子:

import os

path = "documents/file.txt"
absolute_path = os.path.abspath(path)

print("相对路径:", path)
print("绝对路径:", absolute_path)

输出结果将会是:

相对路径: documents/file.txt
绝对路径: /Users/username/documents/file.txt

通过使用os.path.abspath(path)函数,我们成功地将相对路径转换为了绝对路径。现在,我们知道了文件file.txt的确切位置,可以方便地进行操作了。

记住,这个函数就像是一位导航员,它能帮你找到路径的终点,告诉你如何到达目的地。无论你身在何处,它都能帮你确定你所在的位置,并指引你到达目标地点。

Windows操作:

>>> import os
>>> os.path.abspath(r'E:\Python学习\冰墩墩.py')
'E:\\Python学习\\冰墩墩.py'

7、os.path.join(path, name)

这个函数就像是一个婚介所,它能够将目录和文件名或目录连接在一起,让它们成为一对幸福的夫妻。它会帮助你避免手动拼接路径的繁琐工作,就像是一个巧妙的媒人,让你的代码更加优雅和简洁。

在这个函数中,path代表目录,name代表文件名或目录名。它们会通过这个函数的帮助,合二为一,成为一个完整的路径。就像是两个人牵手走在一起,形成一个完美的组合。

让我们来看一个例子:

import os

path = "/home/user"
name = "file.txt"

full_path = os.path.join(path, name)
print(full_path)

输出结果将会是:

/home/user/file.txt

这个函数就像是一个魔术师,将目录和文件名或目录名巧妙地连接在一起,让你的代码更加优雅和简洁。无论是创建文件路径还是处理文件操作,这个函数都能帮助你轻松搞定。让我们感谢这个婚介所,让我们的代码世界更加美好!

Windows操作:

>>> import os
>>> os.path.join(r'E:\Python学习', '冰墩墩.py')
'E:\\Python学习\\冰墩墩.py'

8、os.path.exists(path)

这个函数就像是一个侦探,它的任务是找出文件或目录是否存在。它会像一只鼻子灵敏的猎犬一样,嗅探着路径,如果找到了目标,就会高兴地汪汪叫,返回True;如果找不到,就会失望地摇摇头,返回False

让我们来看看这个函数的使用示例:

import os

path = "/path/to/file.txt"

if os.path.exists(path):
    print("文件或目录存在")
else:
    print("文件或目录不存在")

这个函数非常有用,因为它可以帮助我们在操作文件或目录之前,先判断一下它们是否存在。这就像是在烹饪之前,先检查冰箱里是否有食材一样,避免了不必要的麻烦和浪费。

记住,在使用这个函数时,要确保给它提供正确的路径,否则它就像是在迷宫中寻找宝藏一样,可能会找不到正确的答案。

Windows操作:

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

这个函数就像是一位目录的"心理医生",它会仔细观察路径,分析它的特征,然后给出一个准确的诊断结果。它不会被表面的伪装所迷惑,只会专注于目录的本质。

使用这个函数就像是在给路径做一次"目录体检",它会仔细检查路径的每个细节,确保你不会被一个假冒的目录所欺骗。它是你的"目录保镖",保护你免受非目录的侵害。

所以,当你需要确认一个路径是否是一个目录时,不要犹豫,调用os.path.isdir()函数,让它为你提供一个准确的答案。它就像是一个可靠的导航员,帮助你在目录的海洋中找到正确的方向。

>>> 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)