Python教程

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

本文主要是介绍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)

运行结果都为:

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

print(os.getcwd())

运行结果:

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

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


3.os.chdir()

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

运行结果:

4.os.extsep

返回的都是 ”."

5.os.listdir()

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

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

运行结果:

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:

原来的路径(如图所示):

若为:

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这两个文件

结果如图所示:

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

运行结果:

2.os.path.commonprefix()

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

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

运行结果:

不会判断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"))

运行结果:

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

运行结果:

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:\资料\ "))

运行结果:

6.os.path.join()

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

运行结果:

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:\压缩包下

这篇关于python(os、os.path、shutil模块)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!