Python常用模块os和shutil学习

2020-10-23 10:58:03 浏览数 (1)

os就是“operating system”的缩写,python中的os模块提供了对目录或者文件的新建/删除/查看等属性,还提供了对文件以及目录的路径操作,比如创建、删除目录等。

下面是os模块常用方法思维导图

shutil模块

shutil模块属于高级文件操作模块,可以做os模块的补充,主要可以实现文件的复制和解压缩操作等等。

常用函数

1.复制文件

shutil.copy(要复制的文件,需要复制的文件位置)

copy2() 复制文件,会保留原有文件的信息(操作时间和权限等)

代码语言:javascript复制
#将文件text01.txt复制到文件夹B
import shutil
file01='/Users/tongtony/测试案例/文件夹A/text01.txt'
dirb='/Users/tongtony/测试案例/文件夹B'
shutil.copy(file01,dirb)

copyfile() 复制文件内容,打开文件复制内容,在新建文件复制到新的文件中。

代码语言:javascript复制
import shutil
file01='/Users/tongtony/测试案例/文件夹A/text01.txt'
file02='/Users/tongtony/测试案例/文件夹B/text02.txt'
shutil.copyfile(file01,file02)
2.复制文件夹

copytree 拷贝整个文件夹,返回目标地址路径。

shutil.copytree(要复制的文件夹,要复制的新的文件夹位置)

代码语言:javascript复制
dir01='/Users/tongtony/测试案例/文件夹A'
dir03='/Users/tongtony/测试案例/文件夹D'
shutil.copytree(dir01,dir03)
3.删除文件夹
代码语言:javascript复制
shutil.rmtree(dir03)
4.移动文件/文件夹

shutil.move(要移动的文件/文件夹,要粘贴到的文件位置)

代码语言:javascript复制
file01='/Users/tongtony/测试案例/文件夹C/text01.txt'
dir04='/Users/tongtony/测试案例/文件夹D'
shutil.move(file01,dir04)
5.压缩文件
代码语言:javascript复制
#shutil.make_archive(base_name, format,root_dir=None,...)
#打包或压缩文件,并且返回操作后的文件路径~
# 参数说明:
#   base_name:压缩包的文件名(abc.tar.gz,则base_name为abc),也可以是绝对路径;若是文件名,则压缩后的文件默认存放于当前目录,若是绝对路径,则压缩有的文件就保存到指定路径~
#   format:指定压缩或打包的类型,"zip","tar","bztar","gztar"
#   root_dir:需要压缩的文件或目录路径
代码语言:javascript复制
dir01='/Users/tongtony/测试案例/文件夹B'
# dir04='/Users/tongtony/测试案例/文件夹D'
shutil.make_archive(dir01,'zip',dir01)
6.解压文件
代码语言:javascript复制
zipfile='/Users/tongtony/测试案例/文件夹B.zip'
# shutil.unpack_archive(需要解压的文件,需要解压到的目录,不写默认当前目录)
shutil.unpack_archive(zipfile,'/Users/tongtony/测试案例')

使用os和shutil模块的一个案例

按照文件格式自动归类到文件夹

代码语言:javascript复制
import os
import shutil
# 列出当前目录下的所有文件
path= './'
files=os.listdir(path)

# 遍历文件
for f in files:
    #以扩展名为目录名
    folder_name=path f.split('.')[-1]
    #不存在该目录,则创建
    if not os.path.exists(folder_name):
        os.makedirs(folder_name)
        #移动文件到目录
        shutil.move(f,folder_name)
    else:
        shutil.move(f,folder_name)

0 人点赞