在看大神们的代码时经常能看到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