简单、快速了解Python类os、os.path的使用,了解获取当前路径,修改工作路径,删除文件,创建目录,获取文件一些基本信息等。
os
-
os.getcwd()
: 获取当前路径
-
os.listdir()
: 获取当前路径下所有项(文件、目录等)的列表,每一项为该项的路径
-
os.scandir(path='.')
: 生成当前路径下所有项(文件、目录等)的迭代器,每一项为一个os.DirEntry,属性有 name、path、is_dir()、is_file()等
-
os.mkdir(path, mode=0o777, *, dir_fd=None)
: 创建目录(非递归)
-
os.makedirs(name, mode=0o777, exist_ok=False)
: 创建目录(递归)
-
os.chdir(path)
: 修改工作路径
-
os.remove(path, *, dir_fd=None)
: 删除文件
-
os.rmdir(path, *, dir_fd=None)
: 删除目录,该目录必须为空
os.path
-
os.path.abspath(path)
: 获取path的绝对路径
-
os.path.basename(path)
: 获取路径的基本名称,即path末尾到最后一个斜杠的位置之间的字符串
-
os.path.dirname(path)
: 获取路径的目录名称,即path开头到最后一个斜杠之前的字符串
-
os.path.join(path, *paths)
: 拼接路径,注意:os.path.join(‘C:’, ‘file.txt’)返回C:file.txt,而不是C:\\file.txt,因为C:是磁盘符号
-
os.path.split(path)
: 分割路径为dirname和basename,元组
-
os.path.splitext(path)
: 分割路径为文件后缀符(前带.)和其他字符,元组,注意:os.path.splitext(’.csv’)返回(’.csv’, ‘’)
-
os.path.exists(path)
: 判断路径是否存在
-
os.path.getatime(path)
: 获取路径最后一次访问(access)的自纪元以来的秒数,浮点数
-
os.path.getmtime(path)
: 获取路径最后一次修改(modify)的自纪元以来的秒数,浮点数
-
os.path.getctime(path)
: 获取路径创建(create)的自纪元以来的秒数,浮点数
-
os.path.getsize(path)
: 获取路径的大小(以byte为单位),路径应为文件,如果是目录得到的并准确
练习
1、树状显示路径下的所有目录、文件
import os
def treeView(path, prefix='-- '):
"""
树状显示路径下的所有目录、文件
Args:
path (str): 路径
prefix (str): 格式输出的字符
Raises:
FileNotFoundError: 路径不存在
"""
# 判断路径是否存在,不存在抛出异常
if not os.path.exists(path):
raise FileNotFoundError('Path %s not exist!' % path)
for it in os.scandir(path):
print(prefix + it.name)
# 判断it是否是目录,是目录则递归
if os.path.isdir(it.path):
treeView(it.path, '--' + prefix)
2、获取路径的大小
import os
def getSize(path):
"""
获取路径的大小
Args:
path (str): 路径
Return:
size (int):路径大小(以byte为单位)
Raises:
FileNotFoundError: 路径不存在
"""
# 判断路径是否存在,不存在抛出异常
if not os.path.exists(path):
raise FileNotFoundError('Path %s not exist!' % path)
if os.path.isfile(path):
return os.path.getsize(path)
size = 0
for it in os.scandir(path):
# it是文件,直接加大小;it是目录,加递归大小
if os.path.isfile(it.path):
size += os.path.getsize(it.path)
if os.path.isdir(it.path):
size += getSize(it.path)
return size