6.4.1 标准库 os、os.path 与 shutil 简介
生活随笔
收集整理的這篇文章主要介紹了
6.4.1 标准库 os、os.path 与 shutil 简介
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
os模塊除了提供使用操作系統(tǒng)功能和訪問文件系統(tǒng)的簡便方法之外,還提供了大量文件與文件夾操作的方法,如下表所示。
| 方法 | 功能說明 |
| access(path,mode) | 按照 mode 指定的權(quán)限訪問文件 |
| chdir(path) | 把 path 設(shè)置為當(dāng)前工作目錄 |
| chmod(path,mode,*,dir_fd=None,follow_symlinks=True) | 改變文件的訪問權(quán)限 |
| extsep | 當(dāng)前操作系統(tǒng)所使用的文件擴(kuò)展名分隔符 |
| fstat(path) | 返回打開的文件的所有屬性 |
| get_exec_path() | 返回可執(zhí)行文件的搜索路徑 |
| getcwd() | 返回當(dāng)前的工作目錄 |
| listdir(path) | 返回path目錄下的文件和目錄列表 |
| mkdir(path[,mode=0777]) | 創(chuàng)建目錄 |
| makedirs(path1/path2/...,mode=551) | 創(chuàng)建多級目錄 |
| open(path,flags,mode=0o777,*,dir_fd=None) | 按照mode指定的權(quán)限打開文件,默認(rèn)權(quán)限為可讀、可寫、可執(zhí)行 |
| rmdir(path) | 刪除目錄,目錄中不能有文件或子文件夾 |
| remove(path) | 刪除指定的文件 |
| removedirs(path1/path2...) | 刪除多級目錄,目錄中不能有文件 |
| rename(src,dst) | 重命名文件或目錄,可實(shí)現(xiàn)文件的移動(dòng) |
| scandir(path='.') | 返回包含指定文件夾中所有DirEntry對象的迭代對象 |
| sep | 當(dāng)前操作系統(tǒng)所使用的路徑分隔符 |
| startfile(filepath[,operation]) | 使用關(guān)聯(lián)的應(yīng)用程序打開指定文件或啟動(dòng)指定應(yīng)用程序 |
| stat(path) | 返回文件的所有屬性 |
| truncate(path,length) | 將文件截?cái)啵槐A糁付ǖ拈L度 |
| walk(top,topdown=True,onerror=None) | 遍歷目錄樹,該方法返回一個(gè)元組,包含3個(gè)元素:所有路徑名、所有目錄列表與文件列表 |
| write(fd,data) | 將 bytes 對象 data 寫入文件fd |
os.path模塊提供了大量用于路徑判斷、切分、連接以及文件夾遍歷的方法,如下表所示。
| 方法 | 功能說明 |
| abspath(path) | 返回給定路徑的絕對路徑 |
| basename(path) | 返回指定路徑的最后一個(gè)組成部分 |
| commonpath(paths) | 返回戈丁的多個(gè)路徑的最長公共路徑 |
| commonprefix(paths) | 返回給定的多個(gè)路徑的最長公共前綴 |
| dirname(p) | 返回給定路徑的文件夾部分 |
| exists(path) | 判斷文件是否存在 |
| getatime(filename) | 返回文件的最后訪問時(shí)間 |
| getctime(filename) | 返回文件的最后創(chuàng)建時(shí)間 |
| getmtime(filename) | 返回文件的最后修改時(shí)間 |
| getsize(filename) | 返回文件的大小 |
| isabs(path) | 判斷path是否為絕對路徑 |
| isdir(path) | 判斷path是否為文件夾 |
| isfile(path) | 判斷path是否為文件 |
| join(path,* paths) | 連接兩個(gè)或多個(gè)path |
| split(path) | 對絕對路徑進(jìn)行分割,以列表形式返回 |
| splitest(path) | 從路徑中分隔文件的擴(kuò)展名 |
| splitdrive(path) | 從路徑中分隔出驅(qū)動(dòng)器的名稱 |
shutil模塊也提供了大量的方法支持文件和文件夾的操作,常用方法如下表所示。
| 方法 | 功能說明 |
| copyfile(src,dst) | 復(fù)制文件 |
| copytree(src,dst) | 遞歸復(fù)制文件夾 |
| disk_usage(path) | 查看磁盤使用情況 |
| move(src,dst) | 移動(dòng)文件或遞歸移動(dòng)文件夾 |
| rmtree(path) | 遞歸刪除文件夾 |
| make_archive(base_name,format,root_dir=None,base_dir=None) | 創(chuàng)建tar或zip格式的壓縮文件 |
| unpack_archive(filename,extract_dir = None,format = None) | 解壓縮文件 |
下面通過幾個(gè)示例來演示os、os.path 以及 shutil 模塊的基本用法。
import os
import os.path as op print(op.basename(r'C:\windows\notepad.exe')) #獲取路徑的最后一個(gè)組成部分
#notepad.exe print(op.exists(r'test1.txt')) #測試文件是否存在
#notepad.exe #----------------------------------------------
#os.rename(r'C:\test1.txt',r'C:\test2.txt') #源文件不存在,重命名失敗
'''
Traceback (most recent call last):
File "C:/Users/dddd/AppData/Local/Programs/Python/Python35/test1.py", line 10, in <module>
os.rename(r'C:\test1.txt',r'C:\test2.txt') #源文件不存在,重命名失敗
FileNotFoundError: [WinError 2] 系統(tǒng)找不到指定的文件。: 'C:\\test1.txt' -> 'C:\\test2.txt'
'''
#---------------------------------------------- #os.rename(r'C:\Users\dddd\AppData\Local\Programs\Python\Python35\infomation.txt','C:\\infomation.txt') #os.rename() 可實(shí)現(xiàn)文件的改名和移動(dòng)
#這里區(qū)分是移動(dòng)還是改名就看是不是在同一個(gè)路徑下,是則為改名,否則為移動(dòng) print(op.exists('C:\\infomation.txt'))
#True #返回路徑的文件夾名
path = r'D:\mypython_exp\new_test.txt'
print(os.path.dirname(path)) #D:\mypython_exp #返回文件名
print(os.path.basename(path)) #new_test.txt #切分文件路徑和文件名
print(os.path.split(path)) #('D:\\mypython_exp', 'new_test.txt') print(os.path.splitdrive(path)) #('D:', '\\mypython_exp\\new_test.txt') #切分文件拓展名
print(os.path.splitext(path)) #('D:\\mypython_exp\\new_test', '.txt') #獲取當(dāng)前工作目錄下的 拓展名為.py的文件
print([fname for fname in os.listdir(os.getcwd()) if os.path.isfile(fname) and fname.endswith('.py')])
#['BinaryTree.py', 'demo.py', 'demo_new.py', 'MyArray.py', 'myQueue.py', 'simNumpyArray.py', 'Stack.py', 'test.py', 'test1.py'] #返回當(dāng)前工作目錄
print(os.getcwd()) #C:\Users\...\Programs\Python\Python35 #在當(dāng)前工作目錄下創(chuàng)建子目錄
#print(os.mkdir(os.getcwd() + r'\pyfile')) #把當(dāng)前工作目錄切換到pyfile目錄下
os.chdir(os.getcwd() + r'\pyfile') #返回\pyfile目錄下的文件
print(os.listdir(os.getcwd())) #因?yàn)檫@個(gè)目錄剛創(chuàng)建,還沒有文件,所以返回空列表 [] #當(dāng)前目錄還可以用 . 表示 上級目錄可以用 .. 表示,,這是相對路徑
print(os.listdir('.')) #[]
print(os.listdir('..')) #['.idea', 'BinaryTree.py', ...,] #在 pyfile目錄下再創(chuàng)建一個(gè)目錄
#os.mkdir('aa') #刪除剛才創(chuàng)建的目錄
#os.rmdir('aa') print(os.path.commonpath([r'C:\windows\notepad.exe',r'C:\windows\system'])) #C:\windows
print(os.path.commonprefix([r'a\b\c\d',r'a\b\c\e'])) #a\b\c\
import shutil #shutil.copyfile(r'C:\infomation.txt','C:\\Users\\dddd\\AppData\\Local\\Programs\\Python\\Python35\infomation.txt') #OK了,復(fù)制過來了 #將某個(gè)文件夾及該文件夾中所有文件壓縮至 當(dāng)前目錄下的 a.zip
#shutil.make_archive('.\\a','zip','.','a') #OK了,壓縮成功了。 #將剛才的壓縮文件解壓至 .\aa文件夾下
shutil.unpack_archive('.\a.zip','.\aa')
總結(jié)
以上是生活随笔為你收集整理的6.4.1 标准库 os、os.path 与 shutil 简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浮球液位开关的安装指南
- 下一篇: 学习WebFlux时常见的问题