python(os、os.path、shutil模块)

目录

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()


os模块

方法 功能说明
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() 启动外部程序

1.os.curdir

print(os.curdir)

运行结果都为:python(os、os.path、shutil模块)

2.os.getcwd()与os.curdir()

print(os.getcwd())

运行结果:python(os、os.path、shutil模块)

返回的为当前工作的目录,我把当前编写的python文件放在F:\资料中,即当前工作目录为F:\资料

和os.curdir的运行结果"."同一个意思


3.os.chdir()

os.chdir(r"F:\资料")
print(os.getcwd())

运行结果:python(os、os.path、shutil模块)

4.os.extsep

返回的都是 ”."

5.os.listdir()

注意:不包含子目录,且以列表的形式返回

os.chdir(r"F:\python与数据分析")
print(os.getcwd())
print(os.listdir(os.getcwd()))

运行结果:python(os、os.path、shutil模块)

6.os.rename()与os.renames()

注意: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

7.os.remove()

os.remove(r'F:\python与数据分析\1.docx')

删除1.docx

8.os.replace()

os.replace(r'F:\资料\1.docx',r'F:\资料\2.docx')

将1.docx重命名为2.docx,但内容还是1.docx原来内容,并且删除2.docx

9.os.mkdir()与os.makedirs()

注意:os.mkdir() 创建最外层目录,只能创建一层

os.makedirs() 递归的创建多级目录

os.mkdir(r'F:\资料\w\c')

即在创建c文件夹时必须前面的路径必须存在

os.makedirs(r'F:\资料\r\c') 

在创建最后一级c文件夹时,若前面文件夹不存在,先创建一个文件夹r,再继续创建文件夹c

10.os.rmdir()与os.removedirs()

注意:os.rmdir() 删除最外一层目录

os.removedirs()删除的是空目录

例1:

os.rmdir(r'F:\资料\a\b\c')

删除c文件夹

例2:

原来的路径(如图所示):python(os、os.path、shutil模块)

若为:

os.removedirs(r'F:\资料\a\b\c\d\e') 

删除的是标号为4指向的e文件夹

结果如图所示:python(os、os.path、shutil模块)

在此路径中选择的是a-->b-->c-->d-->e这条路径。

标号为4指向的e文件夹为空,能删除。

标号为3指向的d文件夹在前一步之后还剩下标号为5指向的f文件夹,不为空,删除不了。

若为:

os.removedirs(r'F:\资料\a\b\g\h')

删除的应该是g和h这两个文件

结果如图所示:python(os、os.path、shutil模块)

os.path模块

方法 功能说明
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) 返回文件的大小

1.os.path.commonpath()

注意:还得再用一个括号来填写路径

print(os.path.commonpath((r"F:\资料\a\b\c",r"F:\资料\a\b\d")))

运行结果:python(os、os.path、shutil模块)

2.os.path.commonprefix()

注意:还得再用一个括号来填写路径

print(os.path.commonprefix((r"F:\资料\a\b\cc",r"F:\资料\a\b\ccc")))

运行结果:python(os、os.path、shutil模块)

不会判断cc这个文件夹是否存在

3.os.path.basename()与os.path.dirname()

print(os.path.basename(r"F:\资料\a\b\cc"))
print(os.path.dirname(r"F:\资料\a\b\cc"))

运行结果:python(os、os.path、shutil模块)

4.os.path.samefile()

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","."))

运行结果:python(os、os.path、shutil模块)

5.os.path.split()

print(os.path.split(r"F:\资料\a\b\cc"))
print(os.path.split(r"F:\资料"))
print(os.path.split(r"F:\资料\ "))

运行结果:python(os、os.path、shutil模块)

6.os.path.join()

print(os.path.join(r"F:\资料","w"))

运行结果:python(os、os.path、shutil模块)

shutil模块

方法 功能说明
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) 解压缩压缩文件

1.shutil.copyfile()

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的

2.shutil.copytree()

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文件夹里

没有文件则创建

3.shutil.rmtree()

print(shutil.rmtree(r"F:\资料\w"))

删除w文件夹

print(shutil.rmtree(r"F:\资料\w\a\b"))

删除b文件夹

4.shutil.make_archive()

shutil.make_archive(r'F:\压缩包\资料','zip',r'F:\资料')

将F:\资料压缩到F盘下新建的 资料.zip下

5.shutil.unpack_archive()

shutil.unpack_archive(r'F:\压缩包\资料.zip', r'F:\压缩包')

将F:\压缩包\资料.zip的内容解压到F:\压缩包下

上一篇:转换doc为docx文件保存为txt并提取信息


下一篇:拒绝某度文库,跟我一起用Python写个下载器