91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 3 學習筆記:目錄&文件處理

發布時間:2020-08-09 11:46:04 來源:網絡 閱讀:772 作者:wx5d52d9ece41bf 欄目:編程語言

路徑

路徑,用于定位目錄或文件的字符串。

相對路徑

相對路徑依賴于當前工作目錄(即當前文件所在的目錄),可以使用如下函數獲取當前工作目錄,

1
os.getcwd()
復制
在當前工作目錄中,可以使用相對路徑訪問這個目錄中的所有子目錄和其中的文件,而無需使用完整路徑。

絕對路徑

指一個目錄或文件的實際路徑,如 D:\Code\Python-Study-Notes\exercise\try_except_demo.py,這就是一個絕對路徑,無論當前在哪個目錄中,只要使用這個路徑,就會訪問 try_except_demo.py 文件。

可以使用如下函數獲取目錄或文件的絕對路徑,

1
os.path.abspath(path)
復制
其中,參數 path 是一個相對路徑,可以是目錄,也可以是文件。

路徑處理

判斷指定的目錄或文件是否存在
1
os.path.exists(path)
復制
存在則返回 True,反之則返回 False。

拼接目錄與目錄或文件的名字
1
os.path.join(path, name)
復制
分離文件名和其擴展名
1
os.path.splitext(fileName)
復制
從一個路徑中提取最后的目錄名或文件名
1
os.path.basename(path)
復制
從一個路徑中提取最后一個目錄或文件所在的目錄
1
os.path.dirname(path)
復制
判斷是否為有效路徑
1
os.path.isdir(path)
復制
目錄基本操作

目錄,即文件夾,可以存放目錄及文件。

獲取當前系統類型
1
os.name
復制
其中,nt 表示 Windows;posix 表示 Linux 或 Unix 或 MacOS。

獲取當前系統的換行符
1
os.linesep
復制
獲取當前系統的路徑分隔符
1
os.sep
復制
獲取當前的工作目錄的路徑
1
os.getcwd()
復制
已列表的形式返回指定路徑下的目錄和文件
1
os.listdir(path)
復制
在指定路徑下新建一個目錄
1
os.mkdir(path, mode)
復制
path 為路徑,mode 表示目錄的權限(在非 Unix 系統上無效)。

在指定路徑下創建多級目錄
1
os.makedirs(path, mode)
復制
創建多級目錄,即創建它本身及它的子目錄和子目錄的子目錄,mode 表示目錄的權限(在非 Unix 系統上無效)。

刪除文件
1
os.remove(path)
復制
或者,

1
os.unlink(path)
復制
該函數可以刪除指定路徑下的文件。

刪除一個非空的目錄
1
os.rmdir(path)
復制
使用 rmdir() 刪除一個目錄時,該目錄下不能有任何子目錄和文件。

刪除多級空目錄
1
os.removedirs(path)
復制
刪除它本身及其中的子目錄和子目錄中的子目錄,但是這些目錄中不能有任何文件,即這些目錄必須是空的。

把 path 設置為當前的工作目錄
1
os.chdir(path)
復制
遍歷指定路徑下的所有目錄和文件
1
os.walk(path, topdown=True, onerror, followlinks=False)
復制
該函數只在 Unix 和 Windows 系統中有效。

path 表示要遍歷的目錄;topdown 如果為 True 則自上而下遍歷,反之則自下而上;onerror 用于指定錯誤處理函數;followlinks 用于指定在支持的系統上訪問由符號鏈接指向的目錄。

該函數返回一個元組生成器對象,其中包含三個元素:當前遍歷的路徑,是一個字符串;該路徑下包含的目錄,是一個列表;當前路徑下包含的文件,是一個列表。示例如下:

1
2
3
4
5
6
7
8
9
import os

root = r"D:\Code\YunYiCangQiong\00 原文稿"

for path, dirs, files in os.walk(root,followlinks=True):
for name in dirs:
print("○", os.path.join(root, name))
for name in files:
print("●", os.path.join(root, name))
復制
列出目錄下的所有內容(子目錄和文件)
1
os.listdir(path)
復制
該函數會列出指定路徑的目錄下所有內容,包含子目錄、文件、隱藏文件等。

文件基本操作

在 Python 中,內置了文件(File)對象,在操作文件之間,需要使用 open() 函數打開或創建一個文件,

1
file = open(fileName, mode, buffering)
復制
file 表示被創建的文件對象;fileName 表示要打開或創建的文件名;mode 表示文件的打開模式;buffering 表示讀寫文件的緩存模式。

其中,mode 的參數如下:

Python 3 學習筆記:目錄&文件處理

打開文件并對其操作完畢后,要及時關閉該文件,以免造成不必要的損壞。可以使用 close() 函數將文件關閉,

1
file.close()
復制
為了避免忘記關閉文件而對文件造成不必要的損壞,可以使用 with 關鍵字,該語句可以實現在處理文件時,無論是否出現錯誤,都保證 with 語句結束后關閉文件。

1
2
with expression as target:
pass
復制
expression 是一個表達式,例如使用 open() 函數打開一個文件;target 用于存放 expression 的結果。

當需要向打開的文件中寫入內容時,可以使用 write() 函數,

1
file.write()
復制
當使用 write() 函數向文件中寫入內容后,只有在使用 close() 函數關閉文件時,才會將寫入的內容保存;如果不想立即關閉文件,可以使用 flush() 函數保存寫入的內容,

1
file.flush()
復制
如果要讀取文件的內容,可以使用 read() 函數,

1
file.read(size)
復制
size 表示要讀取的字符的個數,省略則表示讀取全部字符。

read() 函數是從頭開始讀的,如果想要從指定位置開始,則可以使用 seek() 函數移動光標到指定位置,

1
file.seek(offset, whence)
復制
其中,offset 表示光標移動的字符個數;whence 指定字符個數從哪個位置開始計算:0 表示從頭開始;1 表示從當前位置開始;2 表示從結尾開始,默認為 0。

可以使用 readline() 函數一行行讀取,

1
file.readline()
復制
也可以使用 readlines() 函數讀取全部行,

1
file.readlines()
復制
該函數返回一個字符串列表,每個元素為文件的一行內容。

高級操作

shutil 模塊

shutil 模塊可以復制、移動、重命名和刪除目錄或文件。

1
shutil.copy(source, destination)
復制
該函數可以將 source 路徑下的文件,復制到 destination 路徑的目錄下,如果目標目錄中已存在同名文件,則直接替換;如果 destination 路徑中包含文件名,則將被復制的文件重命名為此名稱。

如果想要將目錄及其中的子目錄和文件,全部復制到一個新的目錄中,可以使用

1
shutil.copytree(source, destination)
復制
注意,destination 路徑下不能包含和 source 路徑中目標文件夾的同名目錄,否則系統會拋出異常。

如果需要移動目錄(包括其中的子目錄和文件)或文件,可以使用

1
shutil.move(source, destination)
復制
如果目標文件夾中已經包含同名目錄或者文件,則會拋出異常。

os 模塊中的 rmdir() 和 removedirs() 都只能刪除一個非空的目錄,如果想刪除一個目錄及其中的子目錄和文件,可以使用,

1
shutil.rmtree(path)
復制
該函數可以刪除指定的目錄及其中所有內容(子目錄及文件)。

send2trash 模塊

使用 shutil 模塊中的函數刪除目錄即文件是不可恢復的,為了保險起見,可以使用第三方庫 send2trash 中的函數做刪除動作,它不會完全刪除目錄或文件,而是將它們放入回收站中,以供反悔。因為它是一個第三方模塊,所以使用之前需要使用 pip 工具安裝它,并使用 import 語句導入。

1
send2trash.send2trash(path)
復制
zipfile 模塊

讀取 .zip 文件

該模塊可以將多個目錄或文件做成一個 ZIP 壓縮包,當然也可以解壓壓縮包。

和 File 文件對象一樣,要讀取 ZIP 文件的內容,首先需要創建一個 ZipFile 對象,

1
zipfile.ZipFile(path)
復制
該函數返回一個 ZipFile 對象;path 表示一個 .zip 格式的壓縮包。

然后,可以使用 namelist() 函數獲取壓縮包中的文件列表,

1
ZipFile.namelist()
復制
該函數返回一個以壓縮包中的文件名作為元素的列表。

可以使用 getinfo() 函數獲取文件列表中文件的信息,

1
ZipFile.getinfo(ZipFile.namelist()[index])
復制
該函數需要一個壓縮包中的文件作為參數,返回一個 ZipInfo 對象,該對象具有許多可以獲取文件信息的屬性,如 filename、date_time、file_size 等。

解壓 .zip 文件

通過 ZipFile 對象的 extractall() 方法可以對壓縮包進行解壓,

1
ZipFile.extractall(path)
復制
path 可選參數,用于指定解壓后的存放路徑;如果不指定,則解壓中當前路徑下。

創建 .zip 壓縮包

創建壓縮包,首先需要使用 ZipFile() 方法新建一個空的壓縮包,然后使用 write() 方法將文件添加到壓縮包中,

1
zipfile.ZipFile(name, mode).write(fileName, compress_type=zipfile.ZIP_DEFLATED)
復制
name 用于指定壓縮包的名稱;mode 用于指定壓縮包的打開模式;fileName 用于指定要放入壓縮包中的文件;compress_type 用于指定壓縮算法,一般都是 ZIP_DEFLATED,該算法都大部分類型的文件都有效。

其中,mode 的值可以參考文件基本操作中的值。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

察雅县| 望谟县| 盐亭县| 柏乡县| 庆元县| 清水县| 仁寿县| 盐城市| 改则县| 宁都县| 雷波县| 广饶县| 蓬溪县| 哈尔滨市| 华亭县| 锡林浩特市| 淳安县| 曲水县| 大洼县| 庆云县| 绍兴县| 邯郸县| 万安县| 乌拉特前旗| 师宗县| 聊城市| 右玉县| 朝阳区| 黎平县| 郎溪县| 甘泉县| 遂昌县| 蒙自县| 太仓市| 城固县| 嵊泗县| 班玛县| 宝应县| 师宗县| 合作市| 长垣县|