# ==================刪除==================
# 只能刪除文件,若爲目錄則報錯
# 若文件正在使用,Windows下會直接報錯,Linux下會在目錄表中刪除記錄,但文件還在
# 與os.unlink()同樣的做用
os.remove(r"C:\Users\Microsoft\Desktop\111.exe")
# 刪除目錄,目錄必須爲空,不然報錯OSError
os.rmdir(r"C:\Users\Microsoft\Desktop\aaa")
# 遞歸刪除空目錄
os.removedirs(r"C:\Users\Microsoft\Desktop\1\2\3")
# 刪除整個目錄(無論此目錄下有多少目錄和文件)
shutil.rmtree(r"C:\Users\Microsoft\Desktop\aaa")
# ======================================
# ==================新建==================
# 新建文件夾,若倒數第二層文件夾不存在則會報錯
os.mkdir(r"/home/python")
# 遞歸新建目錄,若文件夾存在則報錯
os.makedirs(r"C:\Users\Microsoft\Desktop\aaa\666\777")
# ======================================
# ==================複製==================
# 複製文件,不能複製文件夾
shutil.copyfile(r"D:\python\py1\1.txt", r"D:\python\py2\1.txt")
# 複製文件,與copyfile不一樣的是,第二個能夠參數能夠使用文件夾路徑
shutil.copy(r"D:\python\py1\1.txt", r"D:\python\py2")
# shutil.copy只複製文件內容,copy2還複製了建立時間、修改時間等信息,
shutil.copy2(r"D:\python\py1\1.txt", r"D:\python\py2")
# 複製整個文件夾,若目標目錄已存在,則會報錯
shutil.copytree(r"D:\python\py1", r"D:\python\py3\py1")
# ======================================
# ==================移動====================
# 移動文件或文件夾,可以使用目錄樹形式
shutil.move(r"D:\python\py1", r"D:\python\py3\py2")
# ========================================
# ==================重命名==================
# 重命名文件或目錄,但不能這樣:rename("/aaa/a.txt","/bbb/a.txt"),也不能同時重命名目錄和文件
os.rename(r"C:\Users\Microsoft\Desktop\aaa\5",r"C:\Users\Microsoft\Desktop\bbb\6")
# 重命名目錄或文件
# 若同時重命名路徑和文件,則會新建路徑並將文件重命名後移動到新目錄
# 如:os.renames("/aaa/b.txt","/bbb/c.txt"),則會在aaa同級目錄新建bbb目錄,並將b.txt重命名爲c.txt後移動到bbb目錄
os.renames(r"C:\Users\Microsoft\Desktop\aaa\6",r"C:\Users\Microsoft\Desktop\aaa\123")
# =======================================
# ==================路徑相關==================
# 獲取文件的完整路徑
os.path.abspath(r"script.py")
# 獲取完整路徑中的文件名,如下返回script.py,等價於os.path.split(path)[1]
os.path.basename(r"/home/python/script.py")
# 獲取文件的絕對路徑,參數也必須是全路徑,另:即便文件不存在也會正常返回,等價於os.path.split(path)[0]
os.path.dirname(r"/home/python/script.py")
# 獲取文件的文件名和擴展名,如下返回:('script', '.py')
os.path.splitext(r"script.py")
# 獲取腳本運行目錄
os.getcwd()
# 獲取目錄下文件列表,參數爲空則爲腳本運行目錄,返回格式:['1.py','2.py']
os.listdir(r"/home/python")
# 判斷文件或路徑是否存在
os.path.exists(r"/home/python")
# 判斷目標是文件仍是路徑
os.path.isdir(r"/home/python")
os.path.isfile(r"/home/python")
# =========================================
兩種方式:python
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])linux
參數1:要遍歷的目錄app
參數2:默認True爲廣度遍歷,False爲深度遍歷spa
參數3:可空,callable 對象,當 walk 異常時,會調用code
參數4:可空,若是爲 True,則會遍歷目錄下的快捷方式(linux 下是 symbolic link)實際所指的目錄(默認關閉)orm
import os
list_dirs = os.walk(rootDir)
for root, dirs, files in list_dirs:
# root 所指的是當前正在遍歷的這個文件夾的自己的地址
# dirs 是一個list,內容是該文件夾中全部的目錄的名字(不包括子目錄)
# files 一樣是list , 內容是該文件夾中全部的文件(不包括子目錄)
print("======")
for d in dirs:
# 只輸出遍歷文件夾名
print(os.path.join(root, d))
for f in files:
# 只輸出遍歷的文件名
print(os.path.join(root, f))
os.listdir(path)對象
參數1:目錄遞歸
返回path目錄下的文件夾名和文件名,並按字母順序排列ip
def Recursion(rootDir):
for lists in os.listdir(rootDir):
path = os.path.join(rootDir, lists)
# 輸出文件名或文件夾名
print(path)
# 判斷是否爲文件夾,若是是,則遞歸遍歷
# 若是不是則爲文件,可執行具體邏輯
if os.path.isdir(path):
Recursion(path)
else:
pass
個人博客:花墨世界ci
公衆號:花墨世界
![]()