文件及目錄操作
'''python中的路徑''''''在python中,我們用內(nèi)置os模塊來進行系統(tǒng)及目錄的相關(guān)操作'''import os# 1.查看當前系統(tǒng)# nt是windows,posix是linuxprint(os.name)# 2.查看當前系統(tǒng)的換行符print(os.linesep.encode())# 3.查看當前系統(tǒng)的路徑分隔符print(os.sep)# 4.獲取當前目錄print(os.getcwd())# 5.獲取指定路徑下的文件和目錄名print(os.listdir())# 6.創(chuàng)建文件夾print('創(chuàng)建一級文件夾用os.mkdir(path)')# 7.創(chuàng)建多級文件夾print('創(chuàng)建多級文件夾用os.makedirs(path)')# 8.刪除文件夾print('刪除文件夾用os.rmdir(path)')# 9.刪除多級文件夾print('刪除多級文件夾用os.removedirs()')# 10.遍歷目錄,返回路徑名、目錄、文件名組成的元組for i in os.walk('./'): print(i)# 除了os,還有os.path模塊可以操作目錄# 11.獲取絕對路徑print(os.path.abspath('./'))# 12.判斷目錄或文件是否存在print('判斷目錄或文件是否存在用os.path.exists(path)')# 13.將目錄與目錄或文件名拼接print(os.path.join(r'\1', r'\2', '3.txt'))# 14.分離文件名和后綴print(os.path.splitext('123.txt'))# 15.提取文件名print(os.path.basename(r'\1\2\3.txt'))# 16.提取路徑名print(os.path.dirname(r'\1\2\3.txt'))# 17.判斷是否有效路徑print(os.path.isdir(r'\1\2\3.txt'))'''結(jié)果ntb'\r\n'\F:\sync\Video\Base_python\class\11文件及目錄操作['11.1Python中目錄.py', '11.2路徑.py']創(chuàng)建一級文件夾用os.mkdir(path)創(chuàng)建多級文件夾用os.makedirs(path)刪除文件夾用os.rmdir(path)刪除多級文件夾用os.removedirs()('./', [], ['11.1Python中目錄.py', '11.2路徑.py'])F:\sync\Video\Base_python\class\11文件及目錄操作判斷目錄或文件是否存在用os.path.exists(path)\2\3.txt('123', '.txt')3.txt\1\2False'''
'''路徑'''import os'''路徑分為相對路徑和絕對路徑'''# 用getcwd()獲取當前工作目錄print(os.getcwd())# 相對于工作目錄的路徑就是相對路徑# 比如'11.1Python中目錄.py'就是相對路徑# 操作這個文件可以直接寫文件名# 代表工作目錄下的文件# 再比如有一個demo,文件夾下有一個demo.py# 操作測試文件.py文件可以寫成demo\\demo.py# 也可以寫成測demo/demo.py'''. 代表當前所在目錄.. 代表當前所在目錄的父目錄./ 代表當前所在目錄下的某個文件夾或文件../ 代表當前所在目錄的父目錄下的某個文件夾或文件'''# 獲取絕對路徑print(os.path.abspath(r'demo\demo.py'))# 路徑拼接print(os.path.join(os.getcwd(), 'demo/demo.py'))# 判斷路徑是否存在print(os.path.exists('demo/demo.py'))# 創(chuàng)建文件夾# 創(chuàng)建demo1文件夾# os.mkdir('demo1')# 如果文件夾已經(jīng)存在將報錯# os.mkdir('demo1')# 此時可以配合判斷路徑是否存在if os.path.exists('demo1'): print('文件夾已存在')else: os.mkdir('demo1') print('文件夾創(chuàng)建成功')# 創(chuàng)建多級目錄# 用mkdir()會報錯# os.mkdir('demo2/demo2')# os.makedirs('demo2/demo2')# 刪除文件夾# 文件夾為空才起作用# os.rmdir('demo')os.rmdir('demo1')# os.rmdir('demo2')# 如果文件夾不存在將會報錯# 此時配合判斷文件夾是否存在來刪除if os.path.exists('demo2'): os.rmdir('demo2') print('刪除成功')else: print('文件夾不存在')# 遍歷文件夾for i in os.walk('..'): print(i)print('')for root, dirs, files in os.walk('..'): print(root) print(dirs) print(files)
'''文件操作'''# 打開文件file = open('123.py', 'r+', encoding='utf8')# 打開文件報錯,因為r的原因'''r 只讀模式,指針在開頭rb 只讀模式,以二進制格式打開文件,指針在開頭r+ 讀寫模式,從頭寫rb+ 讀寫模式,以二進制格式打開文件,從頭寫w 只寫模式,創(chuàng)建文件(清空原有文件)wb 只寫模式,以二進制格式打開文件,創(chuàng)建文件(清空原有文件)w+ 寫讀模式,創(chuàng)建文件(清空原有文件)wb+ 寫讀模式,以二進制格式打開文件, 創(chuàng)建文件(清空原有文件)a 追加模式,只寫,指針在結(jié)尾,創(chuàng)建或打開ab 追加模式, 只寫,以二進制格式打開文件,指針在結(jié)尾,創(chuàng)建或打開a+ 追加模式,寫讀,指針在結(jié)尾,創(chuàng)建或打開ab+ 追加模式,寫讀,以二進制格式打開文件,指針在結(jié)尾,創(chuàng)建或打開'''# 讀文件print(file.read(5))# 查看光標位置print(file.tell())# 設(shè)置光標file.seek(0)# 讀取編碼print(file.encoding)# 文件名print(file.name)# 文件立即寫入file.flush()# 文件設(shè)置buffering,緩存大小# 0不緩存,1緩存 默認,大于1就是大小file.write('111111111111111111111111111111')file.seek(2)# 文件截斷file.truncate(2)# 關(guān)閉文件file.close()# 以上下文管理方式打開文件with open('123.py', 'r+', encoding='utf8') as f: f.read()
'''文件高級操作'''import osimport time# 刪除文件# os.remove('123.py')# 沒有文件將報錯if os.path.exists('123.py'): os.remove('123.py')# 重命名文件和目錄if os.path.exists('demo/demo.py'): os.rename('demo/demo.py', 'demo/demo1.py') print('重命名完成')# 獲取文件信息print(os.stat('demo/demo1.py'))'''st_mode:保護模式st_ino:索引號st_dev: 設(shè)備名st_nlink:被鏈接數(shù)st_uid: 用戶IDst_gid: 組IDst_size: 文件大小st_atime: 最后一次訪問時間st_mtime: 最后一次修改時間st_ctime: 創(chuàng)建時間'''# 演示格式化信息def format_time(second): return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(second))def format_byte(number): for byte in ['B', 'KB', 'MB', 'GB', 'TB']: if number < 1024: return '{:.2f}{}'.format(number, byte) number /= 1024def get_info(file): info = os.stat(file) print(f'文件大小:{format_byte(info.st_size)}') print(f'最后一次訪問:{format_time(info.st_atime)}') print(f'最后一次修改:{format_time(info.st_mtime)}') print(f'創(chuàng)建時間:{format_time(info.st_ctime)}')if __name__ == '__main__': get_info('77-Python文件及目錄操作-路徑.mp4')