目录
os模块
1.os.curdir
2.os.getcwd()与os.curdir()
3.os.chdir()
4.os.extsep
5.os.listdir()
6.os.rename()与os.renames()
7.os.remove()
8.os.replace()
9.os.mkdir()与os.makedirs()
10.os.rmdir()与os.removedirs()
os.path模块
1.os.path.commonpath()
2.os.path.commonprefix()
3.os.path.basename()与os.path.dirname()
4.os.path.samefile()
5.os.path.split()
6.os.path.join()
shutil模块
1.shutil.copyfile()
2.shutil.copytree()
3.shutil.rmtree()
4.shutil.make_archive()
5.shutil.unpack_archive()
方法 | 功能说明 |
---|---|
chdir(path) | 把path设为当前工作目录 |
curdir | 当前文件夹 |
environ | 包含系统环境变量和值的字典 |
extsep | 当前操作系统所使用的文件扩展名分隔符 |
get_exec_path() | 返回可执行文件的搜索路径 |
getcwd() | 返回当前工作目录 |
listdir(path) | 返回path目录下的文件和目录列表 |
方法 | 功能说明 |
---|---|
remove(path) | 删除指定的文件,要求用户拥有删除文件的权限,并且文件没有只读或其他特殊属性 |
rename(src, dst) | 重命名文件或目录,可以实现文件的移动,若目标文件已存在则抛出异常,不能跨越磁盘或分区 |
replace(old, new) | 重命名文件或目录,若目标文件已存在则直接覆盖,不能跨越磁盘或分区 |
scandir(path='.') | 返回包含指定文件夹中所有DirEntry对象的迭代对象,遍历文件夹时比listdir()更加高效 |
sep | 当前操作系统所使用的路径分隔符 |
startfile(filepath [, operation]) | 使用关联的应用程序打开指定文件或启动指定应用程序 |
system() | 启动外部程序 |
print(os.curdir)
运行结果都为:
print(os.getcwd())
运行结果:
返回的为当前工作的目录,我把当前编写的python文件放在F:\资料中,即当前工作目录为F:\资料
和os.curdir的运行结果"."同一个意思
os.chdir(r"F:\资料") print(os.getcwd())
运行结果:
返回的都是 ”."
注意:不包含子目录,且以列表的形式返回
os.chdir(r"F:\python与数据分析") print(os.getcwd()) print(os.listdir(os.getcwd()))
运行结果:
注意:os.rename()只能对已有的文件进行重命名,且不能跨越磁盘或分区
os.renames()可以跨越磁盘或分区
os.rename(r'F:\资料\1.docx',r'F:\资料\11.docx')
只将F:\资料\1.docx的1.docx文件夹重命名为11.docx
os.renames(r'F:\资料\11.docx',r'F:\python与数据分析\1.docx')
将F:\资料\11.docx的11.doc删除,并且在F:\python与数据分析下新建一个1.docx
os.remove(r'F:\python与数据分析\1.docx')
删除1.docx
os.replace(r'F:\资料\1.docx',r'F:\资料\2.docx')
将1.docx重命名为2.docx,但内容还是1.docx原来内容,并且删除2.docx
注意:os.mkdir() 创建最外层目录,只能创建一层
os.makedirs() 递归的创建多级目录
os.mkdir(r'F:\资料\w\c')
即在创建c文件夹时必须前面的路径必须存在
os.makedirs(r'F:\资料\r\c')
在创建最后一级c文件夹时,若前面文件夹不存在,先创建一个文件夹r,再继续创建文件夹c
注意:os.rmdir() 删除最外一层目录
os.removedirs()删除的是空目录
例1:
os.rmdir(r'F:\资料\a\b\c')
删除c文件夹
例2:
原来的路径(如图所示):
若为:
os.removedirs(r'F:\资料\a\b\c\d\e')
删除的是标号为4指向的e文件夹
结果如图所示:
在此路径中选择的是a-->b-->c-->d-->e这条路径。
标号为4指向的e文件夹为空,能删除。
标号为3指向的d文件夹在前一步之后还剩下标号为5指向的f文件夹,不为空,删除不了。
若为:
os.removedirs(r'F:\资料\a\b\g\h')
删除的应该是g和h这两个文件
结果如图所示:
方法 | 功能说明 |
---|---|
isabs(path) | 判断path是否为绝对路径 |
isdir(path) | 判断path是否为文件夹 |
isfile(path) | 判断path是否为文件 |
join(path, *paths) | 连接两个或多个path |
realpath(path) | 返回给定路径的绝对路径 |
relpath(path) | 返回给定路径的相对路径,不能跨越磁盘驱动器或分区 |
samefile(f1, f2) | 测试f1和f2这两个路径是否引用的同一个文件 |
split(path) | 以路径中的最后一个斜线为分隔符把路径分隔成两部分,以元组形式返回 |
splitext(path) | 从路径中分隔文件的扩展名 |
splitdrive(path) | 从路径中分隔驱动器的名称 |
方法 | 功能说明 |
---|---|
abspath(path) | 返回给定路径的绝对路径 |
basename(path) | 返回指定路径的最后一个组成部分 |
commonpath(paths) | 返回给定的多个路径的最长公共路径 |
commonprefix(paths) | 返回给定的多个路径的最长公共前缀 |
dirname(p) | 返回给定路径的文件夹部分 |
exists(path) | 判断文件是否存在 |
getatime(filename) | 返回文件的最后访问时间 |
getctime(filename) | 返回文件的创建时间 |
getmtime(filename) | 返回文件的最后修改时间 |
getsize(filename) | 返回文件的大小 |
注意:还得再用一个括号来填写路径
print(os.path.commonpath((r"F:\资料\a\b\c",r"F:\资料\a\b\d")))
运行结果:
注意:还得再用一个括号来填写路径
print(os.path.commonprefix((r"F:\资料\a\b\cc",r"F:\资料\a\b\ccc")))
运行结果:
不会判断cc这个文件夹是否存在
print(os.path.basename(r"F:\资料\a\b\cc")) print(os.path.dirname(r"F:\资料\a\b\cc"))
运行结果:
os.chdir(r"F:\资料\a\b") print(os.path.samefile(r"F:\资料\a\b\cc",r"cc")) print(os.path.samefile(r"F:\资料\a\b","."))
运行结果:
print(os.path.split(r"F:\资料\a\b\cc")) print(os.path.split(r"F:\资料")) print(os.path.split(r"F:\资料\ "))
运行结果:
print(os.path.join(r"F:\资料","w"))
运行结果:
方法 | 功能说明 |
---|---|
copy(src, dst) | 复制文件,新文件具有同样的文件属性,如果目标文件已存在则抛出异常 |
copy2(src, dst) | 复制文件,新文件具有原文件完全一样的属性,包括创建时间、修改时间和最后访问时间等等,如果目标文件已存在则抛出异常 |
copyfile(src, dst) | 复制文件,不复制文件属性,如果目标文件已存在则直接覆盖 |
copyfileobj(fsrc, fdst) | 在两个文件对象之间复制数据,例如copyfileobj(open('123.txt'), open('456.txt', 'a')) |
copymode(src, dst) | 把src的模式位(mode bit)复制到dst上,之后二者具有相同的模式 |
copystat(src, dst) | 把src的模式位、访问时间等所有状态都复制到dst上 |
copytree(src, dst) | 递归复制文件夹 |
disk_usage(path) | 查看磁盘使用情况 |
move(src, dst) | 移动文件或递归移动文件夹,也可以给文件和文件夹重命名 |
rmtree(path) | 递归删除文件夹 |
make_archive(base_name, format, root_dir=None, base_dir=None) | 创建tar或zip格式的压缩文件 |
unpack_archive(filename, extract_dir=None, format=None) | 解压缩压缩文件 |
print(shutil.copyfile(r"F:\资料\2.docx",r"F:\资料\a\b\ccc\3.docx"))
将2.docx里面的内容复制到3.docx里面
print(shutil.copyfile(r"F:\资料\2.docx",r"F:\资料\a\b\3.docx"))
在b文件夹下新建一个3.docx,里面的内容为2.docx的
print(shutil.copytree(r"F:\资料\a",r"F:\资料\w\a"))
将a文件夹里的内容复制到w文件夹下
print(shutil.copytree(r"F:\资料\a",r"F:\资料\w\c"))
在w盘新建一个名为c的文件夹,将a文件夹里的复制到c文件夹里
print(shutil.copytree(r"F:\资料\a",r"F:\资料\w\m\n"))
在w盘新建一个名为m的文件夹,在m文件夹下新建一个名为n的文件夹,将a文件夹里的复制到n文件夹里
没有文件则创建
print(shutil.rmtree(r"F:\资料\w"))
删除w文件夹
print(shutil.rmtree(r"F:\资料\w\a\b"))
删除b文件夹
shutil.make_archive(r'F:\压缩包\资料','zip',r'F:\资料')
将F:\资料压缩到F盘下新建的 资料.zip下
shutil.unpack_archive(r'F:\压缩包\资料.zip', r'F:\压缩包')
将F:\压缩包\资料.zip的内容解压到F:\压缩包下