1. 门路操作
查看门路是否存在:
import osif os.path.exists(r'E:\jupyter'): print('exist')
拼接门路:
path = os.path.join('C:\\', 'a', 'b', 'c') # C:\a\b\c
查看文件类型:
path = r'C:\Users\Public\Desktop\Microsoft Edge.lnk'if os.path.isdir(path): print('dir')elif os.path.isfile(path): print('file')else: print('other')
2. 目录操作
创立目录:
os.makedirs(r'E:\a\b\c') # 会创立缺失的父目录os.mkdir(r'E:\a\b\c\d') # 不会创立缺失的父目录
删除目录:
import osimport shutilos.rmdir(r'E:\a\b\c\d') # 删除空目录shutil.rmtree(r'E:\a') # 递归删除目录(非空目录)
读取目录:
entries = os.listdir(r'E:\jupyter')for filename in entries: print(filename)
.ipynb_checkpointsmatplotlib.ipynbnetworkxPyTorch
当前工作目录:
os.chdir(r'E:\\') # 切换当前工作目录cur_dir = os.getcwd() # 获取当前工作目录print(cur_dir)
拷贝目录:
# 递归拷贝 E:\jupyter 至 E:\a\jupyter# 会创立缺失的父目录shutil.copytree(r'E:\jupyter', r'E:\a\jupyter')
遍历目录:
# cur_path: 以后门路# sub_dirs: 以后门路蕴含的所有子目录# files: 以后门路蕴含的所有文件for cur_path, sub_dirs, files in os.walk(r'E:\jupyter'): print(cur_path, sub_dirs, files)
E:\jupyter ['.ipynb_checkpoints', 'networkx', 'PyTorch'] ['matplotlib.ipynb']E:\jupyter\.ipynb_checkpoints [] ['matplotlib-checkpoint.ipynb', 'networkx-checkpoint.ipynb']E:\jupyter\networkx ['.ipynb_checkpoints'] ['edgelist.txt', 'networkx.ipynb']...
3. 文件操作
注:目录也属于文件。
重命名:
# 将 E:\tmp\a.mp4 重命名为 E:\tmp\A.mp4os.rename(r'E:\tmp\a.mp4', r'E:\tmp\A.mp4')
删除文件:
os.remove(r'E:\tmp\A.mp4')
查看文件信息:
stat = os.stat(r'E:\jupyter')print(stat)
os.stat_result(st_mode=16895, st_ino=562949954788505, st_dev=780501735, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1630978768, st_mtime=1630832561, st_ctime=1630718956)
拷贝文件
shutil.copyfile(r'E:\tmp\b.mp4', r'E:\tmp\c.mp4')
挪动文件(或递归地挪动目录)
# 挪动 E:\tmp\test 至 E:\b\testshutil.move(r'E:\tmp\test', r'E:\b\test')
通过重命名操作也能够实现文件或目录的挪动:
os.rename(r'E:\b\test', r'E:\tmp\test')