详解-os模块-python

本文详细介绍了Python的os模块,包括系统属性、目录和文件操作、path模块的使用,以及相对路径和绝对路径的概念。示例展示了如何使用os模块实现文件复制,包括递归复制子目录。此外,文章还提供了os.path.join()用于跨平台路径拼接的建议。
摘要由CSDN通过智能技术生成


os模块是python标准库中一个用于访问操作系统功能的模块。

1、系统相关

属性或者方法描述
os.name获取操作系统类型:'nt’表示windows系统,'posix’表示Linux或者unix系统
os.environ系统环境变量
os.environ.get(key)获取系统环境变量key对应的value
os.system()执行系统shell

2、目录和文件相关

属性或者方法描述
os.getcwd()查看当前目录(路径)
os.chdir()切换当前目录
os.curdir当前目录的字符串名 : .
os.pardir当前目录父目录字符串名:…
os.mkdir()创建目录
os.rmdir()删除目录
os.makedirs()递归创建目录(如果父目录不存在)
os.removedirs()递归删除目录(非空)
os.listdir()显示指定目录下所有的文件和子目录(包括隐藏文件)
os.remove()删除指定文件
os.stat()获取文件/目录信息
os.sep当前路径分隔符:windows-\\ ,linux-/
os.pathsep多个路径/目录分隔符: ‘;’
os.extsep文件名和文件扩展名分隔符:.
  • os.removedirs():如果路径下有非空目录,报错

3、path模块

属性或者方法描述
os.path.basename()返回给定路径的文件名;如果全是路径则返回最后一个分隔符后的目录名
os.path.dirname()返回给定路径的目录名;如果全是路径则返回最后一个分隔符前的路径名
os.path.exists()判断是否存在
os.path.isabs()判断是否是绝对路径
os.path.isfile()判断是否是文件
os.path.isdir()判断是否是目录
os.path.split()将给定路径分隔为(目录, 文件)二元组
os.path.splitext分隔文件名和扩展名
os.path.join()拼接目录+目录/目录+文件
  • os.path.join():用于拼接路径和文件或者路径+目录,由于我们编写的程序可能在不同平台运行,强烈建议拼接路径使用改方法,而不是直接拼接字符串;因为不同平台路径分隔符不同。

4、综合

相对路径和绝对路径:

  • 相对路径:以某个目录或者文件为参照,到指定目录或者文件的路径;windows 中非盘符开头的路径,Linux中非/开头的路径,比如:user/a.txt , user/aaa
  • 绝对路径:从根目录(或者盘符)开始的路径,比如:c:/user/a.txt, /usr/xxx

示例:我们通过网盘下载了很多学习视频(多个文件),现在我们想要吧这些学习视频放到另外的一个盘中(系统windows)

import os


def copy_files(src, target):
    '''
    复制文件夹
    :param src:     源目录
    :param target:  目标目录
    :return:
    '''
    # 判断源目录是否存在
    if os.path.exists(src) and os.path.isdir(src):
        # 如果目标目录不存在,则创建
        if not os.path.exists(target):
            os.makedirs(target)

        file_list = os.listdir(src)
        for file in file_list:
            path = os.path.join(src, file)
            dest_path = os.path.join(target, file)
            if os.path.isdir(path):
                # 如果是子目录,则递归复制
                copy_files(path, dest_path)
            else:
                # 如果是文件就复制
                with open(path, 'rb') as rstream:
                    content = rstream.read()
                    with open(dest_path, 'wb') as wstream:
                        wstream.write(content)


copy_files('d:/download', 'i:/test')

源代码仓库:https://gitee.com/gaogzhen/python-study

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaog2zh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值