Python教程

python之os模块详解

本文主要是介绍python之os模块详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

os模块详解

在看大神们的代码时经常能看到os模块的身影,然后就想着做一下总结,方便以后查看
下图是参考CSDN博主“数据分析与统计学之美”,非常感谢博主的图片
在这里插入图片描述
下面我们针对每一个详细的介绍一下其用法:
(1)os.getcwd() 获取当前的工作路径;

>>> import os
>>> os.getcwd()
'C:\\Users\\cc'

(2)os.listdir(path) 显示当前文件夹下所有文件和目录组成的列表;

>>> path=os.getcwd()
>>> os.listdir(path)
['.anaconda', '.android', '.AndroidStudio3.5', '.astropy', '.bash_history', '.cache', '.conda', '.condarc', '.config', '.designer', '.emulator_console_auth_token', '.gitconfig', '.gradle', '.ipython', '.jupyter', '.keras', '.labelmerc', '.liarcom-gui.cfg', '.matplotlib', '.spyder-py3', '.ssh', '1.3.6.1.4.1.14519.5.2.1.6279.6001.861997885565255340442123234170.mhd', '1.3.6.1.4.1.14519.5.2.1.6279.6001.861997885565255340442123234170.zraw', '3D Objects', 'Anaconda3', 'ansel', 'AppData', 'Application Data', 'Contacts', 'Cookies', 'Datasets', 'Desktop', 'Documents', 'Downloads', 'Favorites', 'Links', 'Local Settings', 'MicrosoftEdgeBackups', 'Music', 'My Documents', 'NetHood', 'NTUSER.DAT', 'ntuser.dat.LOG1', 'ntuser.dat.LOG2', 'NTUSER.DAT{53b39e87-18c4-11ea-a811-000d3aa4692b}.TxR.0.regtrans-ms', 'NTUSER.DAT{53b39e87-18c4-11ea-a811-000d3aa4692b}.TxR.1.regtrans-ms', 'NTUSER.DAT{53b39e87-18c4-11ea-a811-000d3aa4692b}.TxR.2.regtrans-ms', 'NTUSER.DAT{53b39e87-18c4-11ea-a811-000d3aa4692b}.TxR.blf', 'NTUSER.DAT{53b39e88-18c4-11ea-a811-000d3aa4692b}.TM.blf', 'NTUSER.DAT{53b39e88-18c4-11ea-a811-000d3aa4692b}.TMContainer00000000000000000001.regtrans-ms', 'NTUSER.DAT{53b39e88-18c4-11ea-a811-000d3aa4692b}.TMContainer00000000000000000002.regtrans-ms', 'ntuser.ini', 'OneDrive', 'Pictures', 'PrintHood', 'PycharmProjects', 'Recent', 'Saved Games', 'Searches', 'SendTo', 'Templates', 'UIDowner', 'Videos', '「开始」菜单']

(3)os.walk(path)
含义:含义 :传入任意一个path路径,深层次遍历指定路径下的所有子文件夹,返回的是一个由路径、文件夹列表、文件列表组成的元组
(4)os.path.exists(path)
作用:传入一个path路径,判断指定路径下的目录是否存在。存在返回True,否则返回False;

>>> import os
>>> os.getcwd()
'C:\\Users\\cc'
>>> path=os.getcwd()
>>> os.path.exists(path)
True

(5)os.mkdir(path)
含义:传入一个path路径,创建单个文件夹;

 >>> os.getcwd()
'C:\\Users\\cc'
>>> path2 = os.getcwd()+"\\cuicui"
>>> os.mkdir(path2)
>>> path2
'C:\\Users\\cc\\cuicui'

(6)os.makedirs():传入一个path路径,生成一个递归的文件夹
注意:如果文件夹已经存在,就会报错。因此创建文件夹之前,需要使用os.path.exists(path)函数判断文件夹是否存在;

 if os.path.exists("./weights") is False:
        os.makedirs("./weights")  # 功能:新建文件夹
    
 >>> os.getcwd()
'C:\\Users\\cc'
>>> path1=os.getcwd()+"\\cuicui"
>>> os.mkdir(path1)
>>> path1
'C:\\Users\\cc\\cuicui'
>>> os.makedirs("cuicui\\1")
>>> path2=os.makedirs("cuicui\\1")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\cc\Anaconda3\lib\os.py", line 220, in makedirs
    mkdir(name, mode)
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'cuicui\\1'

(7)os.rmdir(path)
含义:传入一个path路径,删除指定路径下的文件夹;
注意:该方法只能删除空文件夹,删除非空文件夹会报错;

>>> os.rmdir('cuicui//1//2')

(8)os.path.join(path1,path2)
含义:传入两个path路径,将该路径拼接起来,形成一个新的完整路

>>> path2
'C:\\Users\\cc\\a\\b\\c'
>>> f="1.txt"
>>> os.path.join(path2,f)
'C:\\Users\\cc\\a\\b\\c\\1.txt'
>>>

(9)os.path.split(path)
含义:传入一个完整的path路径,将其拆分为绝对路径和文件名两部分

>>> path3=os.path.join(path2,f)
>>> os.path.split(path3)
('C:\\Users\\cc\\a\\b\\c', '1.txt')
>>>

(10)os.path.dirname(path)
含义:传入一个完整的文件路径,只获取其绝对路径;

>>> path3=os.path.join(path2,f)
>>> os.path.split(path3)
('C:\\Users\\cc\\a\\b\\c', '1.txt')
>>> path4=os.path.dirname(path3)
>>> path4
'C:\\Users\\cc\\a\\b\\c'
>>>

(11)os.path.basename(path)
含义:传入一个完整的文件路径,只获取其文件名;

>>> path3
'C:\\Users\\cc\\a\\b\\c\\1.txt'
>>> path5=os.path.basename(path3)
>>> path5
'1.txt'

(12)os.path.isdir(path)
含义:传入一个完整的文件路径,判断它是否是文件夹;

path = os.getcwd()
file_list = os.listdir()
for file in file_list:
    if os.path.isdir(file):
        print(file)

(13)os.path.isfile(path)
含义:传入一个完整的文件路径,判断它是否是文件;

path = os.getcwd()
file_list = os.listdir()
for file in file_list:
    if os.path.isfile(file):
        print(file)

(14)os.path.sep
含义:返回当前操作系统的路径分隔符;

>>> os.path.sep
'\\'

(15)os.path.getsize(path)
含义:传入一个完整的文件路径,返回该文件的大小;

>>> os.path.getsize("cuicui")
0

参考资料:(1)https://blog.csdn.net/weixin_41261833/article/details/108047966?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163784090316780269868868%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163784090316780269868868&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-108047966.first_rank_v2_pc_rank_v29&utm_term=+os%E6%A8%A1%E5%9D%97&spm=1018.2226.3001.4187
(2)https://blog.csdn.net/qq_38684504/article/details/86609283?ops_request_misc=&request_id=&biz_id=102&utm_term=%20os%E6%96%87%E4%BB%B6%E7%9A%84%E5%90%84%E7%A7%8D%E7%94%A8%E6%B3%95&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-86609283.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187

这篇关于python之os模块详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!