文件夹与文件操作:
归档操作:
1、文件操作
copyfileobj(fsrc, fdst, length=16*1024): 将fsrc文件内容复制至fdst文件,length为fsrc每次读取的长度,用做缓冲区大小
1
2
3
4
import
shutil
f1
=
open``(``"file.txt"``,``"r"``)
f2
=
open``(``"file_copy.txt"``,``"a+"``)
shutil.copyfileobj(f1,f2,length``=``1024``)
copyfile(src, dst): 将src文件内容复制至dst文件
1
2
import
shutil
shutil.copyfile(``"file.txt"``,``"file_copy.txt"``)
copymode(src, dst): 将src文件权限复制至dst文件。文件内容,所有者和组不受影响
1
2
import
shutil
shutil.copymode(``"file.txt"``,``"file_copy.txt"``)
copystat(src, dst): 将权限,上次访问时间,上次修改时间以及src的标志复制到dst。文件内容,所有者和组不受影响
1
2
import
shutil
shutil.copystat(``"file.txt"``,``"file_copy.txt"``)
copy(src, dst): 将文件src复制至dst。dst可以是个目录,会在该目录下创建与src同名的文件,若该目录下存在同名文件,将会报错提示已经存在同名文件。权限会被一并复制。本质是先后调用了copyfile与copymode而已
1
2
3
4
improt shutil,os
shutil.copy(``"file.txt"``,``"file_copy.txt"``)
# 或者
shutil.copy(``"file.txt"``,os.path.join(os.getcwd(),``"copy"``))
copy2(src, dst): 将文件src复制至dst。dst可以是个目录,会在该目录下创建与src同名的文件,若该目录下存在同名文件,将会报错提示已经存在同名文件。权限、上次访问时间、上次修改时间和src的标志会一并复制至dst。本质是先后调用了copyfile与copystat方法而已
1
2
3
4
improt shutil,os
shutil.copy2(``"file.txt"``,``"file_copy.txt"``)
# 或者
shutil.copy2(``"file.txt"``,os.path.join(os.getcwd(),``"copy"``))
ignore_patterns(*patterns): 忽略模式,用于配合copytree()
方法,传递文件将会被忽略,不会被拷贝
copytree(src, dst, symlinks=False, ignore=None): 拷贝文档树,将src文件夹里的所有内容拷贝至dst文件夹
ignore_patterns()
1
2
3
4
5
6
import
shutil,os
folder1
=
os.path.join(os.getcwd(),``"aaa"``)
# bbb与ccc文件夹都可以不存在,会自动创建
folder2
=
os.path.join(os.getcwd(),``"bbb"``,``"ccc"``)
# 将"abc.txt","bcd.txt"忽略,不复制
shutil.copytree(folder1,folder2,ignore``=``shutil.ignore_patterns(``"abc.txt"``,``"bcd.txt"``)
rmtree(path, ignore_errors=False, onerror=None): 移除文档树,将文件夹目录删除
1
2
3
import
shutil,os
folder1
=
os.path.join(os.getcwd(),``"aaa"``)
shutil.rmtree(folder1)
move(src, dst): 将src移动至dst目录下。若dst目录不存在,则效果等同于src改名为dst。若dst目录存在,将会把src文件夹的所有内容移动至该目录下面
1
2
3
4
5
6
7
8
9
10
11
12
13
import
shutil,os
# 示例一,将src文件夹移动至dst文件夹下面,如果bbb文件夹不存在,则变成了重命名操作
folder1
=
os.path.join(os.getcwd(),``"aaa"``)
folder2
=
os.path.join(os.getcwd(),``"bbb"``)
shutil.move(folder1, folder2)
# 示例二,将src文件移动至dst文件夹下面,如果bbb文件夹不存在,则变成了重命名操作
file1
=
os.path.join(os.getcwd(),``"aaa.txt"``)
folder2
=
os.path.join(os.getcwd(),``"bbb"``)
shutil.move(file1, folder2)
# 示例三,将src文件重命名为dst文件(dst文件存在,将会覆盖)
file1
=
os.path.join(os.getcwd(),``"aaa.txt"``)
file2
=
os.path.join(os.getcwd(),``"bbb.txt"``)
shutil.move(file1, file2)
disk_usage(path): 获取当前目录所在硬盘使用情况。Python3新增方法
1
2
3
4
import
shutil.os
path
=
os.path.join(os.getcwd(),``"aaa"``)
info
=
shutil.disk_usage(path)
print``(info)
# usage(total=95089164288, used=7953104896, free=87136059392)
chown(path, user=None, group=None): 修改路径指向的文件或文件夹的所有者或分组。Python3新增方法
1
2
3
import
shutil,os
path
=
os.path.join(os.getcwd(),``"file.txt"``)
shutil.chown(path,user``=``"root"``,group``=``"root"``)
which(cmd, mode=os.F_OK | os.X_OK, path=None): 获取给定的cmd命令的可执行文件的路径。Python3新增方法
1
2
3
import
shutil
info
=
shutil.which(``"python3"``)
print``(info)
# /usr/bin/python3
2、归档操作
shutil还提供了创建和读取压缩和存档文件的高级使用程序。内部实现主要依靠的是zipfile和tarfile模块
make_archive(base_name, format, root_dir, …): 生成压缩文件
1
2
3
4
5
6
import
shutil,os
base_name
=
os.path.join(os.getcwd(),``"aaa"``)
format
=
"zip"
root_dir
=
os.path.join(os.getcwd(),``"aaa"``)
# 将会root_dir文件夹下的内容进行压缩,生成一个aaa.zip文件
shutil.make_archive(base_name,
format``, root_dir)
get_archive_formats(): 获取支持的压缩文件格式。目前支持的有:tar、zip、gztar、bztar。在Python3还多支持一种格式xztar
unpack_archive(filename, extract_dir=None, format=None): 解压操作。Python3新增方法
1
2
3
4
import
shutil,os
zip_path
=
os.path.join(os.getcwd(),``"aaa.zip"``)
extract_dir
=
os.path.join(os.getcwd(),``"aaa"``)
shutil.unpack_archive(zip_path, extract_dir)
get_unpack_formats(): 获取支持的解压文件格式。目前支持的有:tar、zip、gztar、bztar和xztar。Python3新增方法
关于shutil的更多操作:https://docs.python.org/3/library/shutil.html
手机扫一扫
移动阅读更方便
你可能感兴趣的文章