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