玖叶教程网

前端编程开发入门

Python入门:os常用函数

常用函数

import os
# 获取当前工作目录
cwd = os.getcwd()
# 切换工作目录
os.chdir('D:/')
# 获取指定目录下所有文件、目录
files = os.listdir('D:/')
# 创建目录,若目录存在则报错
os.mkdir('E:/os_dir_mk')
# 删除空目录,若目录不存在、不为空则报错
os.rmdir('E:/os_dir_rm')
# 删除文件
os.remove(r'E:\os_dir_rm\os_dir_rm.txt')

实用例子

  • 创建目录进行安全检查
import os

dir_mk = 'E:/os_dir_mk'
# 如果目录不存在创建目录
if not os.path.exists(dir_mk):
    os.mkdir(dir_mk)
# 否则打印提示
else:
    print('Directory already exists!')
  • 删除目录进行安全检查
import os

dir_rm = 'E:/os_dir_rm'
# 检查目录是否存在,否则提示目录不存在
if os.path.exists(dir_rm):
    # 目录为空删除目录,否则提示目录非空
    if not os.listdir(dir_rm):
        os.rmdir(dir_rm)
    else:
        print('Directory is not empty.')
else:
    print('Directory does not exist.')
  • 删除目录
import os


# 1.获取目录下目录、文件
# 2.若文件,直接删除
# 3.若空目录,删除
# 4.非空,递归删除
# 5.删除本目录
def remove_directory(path_dir):
    if os.path.exists(path_dir):
        files = os.listdir(path_dir)
        for file in files:
            path = os.path.join(path_dir, file)
            if os.path.isfile(path):
                os.remove(path)
            elif not os.listdir(path):
                os.rmdir(path)
            else:
                remove_directory(path)
        os.rmdir(path_dir)
    else:
        print('Directory does not exists.')

if __name__ == '__main__':
    dir_rm = r'E:\os_dir_rm'
    remove_directory(dir_rm)
  • 复制文件、文件夹
import os


# 源路径为文件、目标路径为文件:另存为
# 源路径为目录、目标路径为文件:报错
# 源路径为文件、目标路径为目录:复制到目标目录下
# 源路径为目录、目标路径为目录:复制到目标目录下
# 1.目标目录下创建源目录同名目录
# 2.获取源目录下文件、目录
# 3.若文件,直接复制到同名目录
# 4.若目录,同名目录下新建同名目录,重复1、2
def copy_file(path_src, path_tar):
    # 源路径不存在,报错
    if not os.path.exists(path_src):
        print('Source path does not exist.')
    else:
        isdir_src = os.path.isdir(path_src)
        isdir_tar = not os.path.isfile(path_tar)
        # 文件复制到文件(另存)
        if not isdir_src and not isdir_tar:
            with open(path_src, 'rb') as f_src:
                stream_src = f_src.read()
                with open(path_tar, 'wb') as f_tar:
                    f_tar.write(stream_src)
        # 目录复制到文件将报错
        elif isdir_src and not isdir_tar:
            print('Sorry, cannot copy a directory to a file.')
        # 目录复制到目录下
        elif isdir_src and isdir_tar:
            # 目标目录下新建目录的目录路径,用目标目录和源目录文件夹名表示
            path_dir_tar = os.path.join(path_tar, path_src.split('\\')[-1])
            # 目标目录不存在,新建目标目录并在目标目录下新建同名目录
            if not os.path.exists(path_tar):
                os.mkdir(path_tar)
                os.mkdir(path_dir_tar)
            # 目标目录内已有同名目录,提示信息并返回
            elif os.path.exists(path_dir_tar):
                print('Target directory has already exist. Cannot create directory.')
                return
            # 获取原目录内所有文件、目录
            files = os.listdir(path_src)
            for file in files:
                # 结合形成目标路径
                path_file_src = os.path.join(path_src, file)
                # 目标路径为文件则复制到新建目录内
                if os.path.isfile(path_file_src):
                    with open(path_file_src, 'rb') as f_src:
                        stream_src = f_src.read()
                        path_file_tar = os.path.join(path_dir_tar, file)
                        with open(path_file_tar, 'wb') as f_tar:
                            f_tar.write(stream_src)
                # 目标路径为目录则将目录复制到新建目录内
                else:
                    copy_file(path_file_src, path_dir_tar)
        # 文件复制到目录下
        elif not isdir_src and isdir_tar:
            with open(path_src, 'rb') as f_src:
                stream_src = f_src.read()
                filename = os.path.split(path_src)[1]
                path_file_tar = os.path.join(path_tar, filename)
                with open(path_file_tar, 'wb') as f_tar:
                    f_tar.write(stream_src)


if __name__ == '__main__':
    path_src = r'E:\src'
    path_tar = r'D:\tar'
    copy_file(path_src, path_tar)

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言