一、創建、刪除、重命名、複製
涉及到的模塊: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,如果是文件後一部分是文件格式。