一、创建、删除、重命名、复制
涉及到的模块: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,如果是文件后一部分是文件格式。