Python中常見的文件、目錄操作(os、codecs、shutil、glob模塊)

一、創建、刪除、重命名、複製

涉及到的模塊:os、codecs和shutil

創建目錄:

os.mkdir('directory')  # 創建一個目錄,命名爲directory

重命名目錄(文件):

os.rename('oldname', 'newname')

移動目錄(文件):

shutil.move('old', 'new')

複製目錄:

shutil.copytree('olddir', 'newdir')  # olddir和newdir都只能是目錄,且newdir必須不存在

刪除目錄:

os.rmdir('directory')  # 只能刪除空目錄

shutil.rmtree('directory')  # 空目錄和有內容的目錄都可以刪除

轉換目錄:

os.chdir('path')  # 換路徑

創建文件:

os.mknod('test.txt')  # 創建一個空文件,命名爲test.txt

open('test.txt', 'w')  # 直接打開一個文件,如果文件不存在則創建文件(常用codecs.open('test.txt', 'w', 'utf-8')替換,這種方式不用過多考慮編碼問題)

複製文件:

shutil.copyfile('oldfile', 'newfile')  # oldfile和newfile都只能是文件

shutil.copy('oldfile', 'new')  # new可以是文件也可以是目錄

刪除文件:

os.remove('file')

二、判斷

判斷:

os.path.exists('target')  # 判斷目錄是否存在

os.path.isdir('target')  # 判斷是否是目錄

os.path.isfile('target')  # 判斷是否是文件

三、遍歷目錄和文件

遍歷目錄和文件兩種方法:

1、os.walk()

遍歷所有文件:

for root, dirs, files in os.walk('./'):
    for file_name in files:
        file_path = os.path.join(root, file_name)
        print(file_path)

遍歷所有目錄:

for root, dirs, files in os.walk('./'):
    for dir in dirs:
        dir = os.path.join(root, dir)
        print(dir)

2、os.listdir()

TODO:glob模塊遍歷

遍歷所有目錄和文件:

def get_file_path(root_path,file_list,dir_list):
    #獲取該目錄下所有的文件名稱和目錄名稱
    dir_or_files = os.listdir(root_path)
    for dir_file in dir_or_files:
        #獲取目錄或者文件的路徑
        dir_file_path = os.path.join(root_path,dir_file)
        #判斷該路徑爲文件還是路徑
        if os.path.isdir(dir_file_path):
            dir_list.append(dir_file_path)
            #遞歸獲取所有文件和目錄的路徑
            get_file_path(dir_file_path,file_list,dir_list)
        else:
            file_list.append(dir_file_path)
 
if __name__ == "__main__":
    #根目錄路徑
    root_path = r"D:\test"
    #用來存放所有的文件路徑
    file_list = []
    #用來存放所有的目錄路徑
    dir_list = []
    get_file_path(root_path,file_list,dir_list)
    print(file_list)
    print(dir_list)

四、路徑

os.path.abspath('./'): 得到絕對路徑。

os.path.join('/a', 'b'): 路徑拼接。

os.path.split('/a/b/c.txt'): 路徑拆分, 得到兩部分,後一部分總是最後級別的目錄或文件名。

os.path.splitext('/a/b/c.txt'): 路徑拆分,得到兩部分,如果是目錄後一部分爲空str,如果是文件後一部分是文件格式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章