Python3之内置模块shutil和shelve

shutil内置模块

  高级的文件、文件夹、压缩包处理模块

['Error', 'ExecError', 'ReadError', 'RegistryError', 'SameFileError', 
'SpecialFileError', '_ARCHIVE_FORMATS', '_BZ2_SUPPORTED', '_LZMA_SUPPORTED', 
'_UNPACK_FORMATS', '__all__', '__builtins__', '__cached__', '__doc__', 
'__file__', '__loader__', '__name__', '__package__', '__spec__', '_basename', 
'_check_unpack_options', '_copyxattr', '_destinsrc', '_ensure_directory', 
'_find_unpack_format', '_get_gid', '_get_uid', '_make_tarball', '_make_zipfile', 
'_ntuple_diskusage', '_rmtree_safe_fd', '_rmtree_unsafe', '_samefile', '_unpack_tarfile', 
'_unpack_zipfile', '_use_fd_functions', 

'chown', 'collections', 'copy', 'copy2', 'copyfile', 'copyfileobj', 
'copymode', 'copystat', 'copytree', 'disk_usage', 'errno', 'fnmatch', 
'get_archive_formats', 'get_terminal_size', 'get_unpack_formats', 'getgrnam', 
'getpwnam', 'ignore_patterns', 'make_archive', 'move', 'nt', 'os', 
'register_archive_format', 'register_unpack_format', 'rmtree', 'stat', 
'sys', 'tarfile', 'unpack_archive', 'unregister_archive_format', 
'unregister_unpack_format', 'which']
>>>

shutil.copyfileobj(fstr,fdst[,length])
将文件内容拷贝到另一个文件中,可以部分内容。fstr和fdst指文件套接字。

import shutil
f1 = open('本节笔记', encoding='utf-8')
f2 = open('笔记2', 'w', encoding='utf-8')
shutil.copyfileobj(f1, f2)

shutil.copyfile(src,dst)

import shutil
shutil.copyfile('笔记2', '笔记3')

shutil.copymode(src, dst)
仅拷贝权限。内容、组、用户均不变。

shutil.copystat(src, dst)
拷贝状态的信息,包括:mode bits,atime,mtime,flags

shutil.copy(src, dst)
拷贝文件和权限

shutil.copy2(src, dst)
拷贝文件和状态信息

shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件,包括目录。

import shutil
shutil.copytree('test4', 'new_test4')

test4为目录名,new_test4自动创建。

shutil.rmtree(path[, ignore_errors[,onerror]])
递归删除文件

import shutil
shutil.rmtree('new_test4')

shutil.move(src, dst)
递归的去移动文件

shutil.make_archive(base_name, format,…)
创建压缩包并返回文件路径,例如:zip、tar
*base_name:压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如:www =>保存至当前路径
如: /users/www =>保存至/users/目录下
*format:压缩包种类,’zip’,’tar’,’bztar’,’gztar’
*root_dir:要压缩的文件夹路径(默认当前目录)
*owner:用户,默认当前用户
*group:组,默认当前组
*logger:用于记录日志,通常时logging.Logger对象

# 将/user/Downloads/test下的文件打包放置当前程序目录下
import shutil
ret = shutil.make_archive('www', 'gztar', root_dir='/user/Downloads/test')

shutil对压缩包的处理时调用ZipFile和TarFile两个模块来进行的。

shelve内置模块

  shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。

写入文件

import shelve
import datetime

d = shelve.open('shelve_test')  # 打开一个文件

info = {'age': 22, 'job': 'it'}
name = ['tom', 'jerry', 'test']

d['name'] = name
d['info'] = info
d['date'] = datetime.datetime.now()

d.close()

读取文件

import shelve
d = shelve.open('shelve_test')  # 打开一个文件

print(d.get('name'))
print(d.get('info'))
print(d.get('date'))

d.close()

猜你喜欢

转载自blog.csdn.net/llf_cloud/article/details/81988503