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