一、sys模块
常用方法有:
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
# write by congcong
import sys
# 命令行参数List,第一个元素是程序本身路径
print(sys.argv) # ['D:/pycharm/Test1/Second_module/sys模块.py']
# 退出程序,正常退出时exit(0)
#sys.exit()
# 获取python解释程序的版本信息
print(sys.version) # 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
# 最大的Int值
print(sys.maxsize) # 9223372036854775807
# 返回模块的搜索路径,初始化使用PYTHONPATH环境变量的值
sys.path
# 返回操作系统平台名称
print(sys.platform)
# 标准输出
sys.stdout.write('plese:')
# 标准输入
val = sys.stdin.readline()[:-1]
# 获取最大递归层次
print(sys.getrecursionlimit())
# 设置最大递归层次
sys.setrecursionlimit(1000)
# 获取解释器默认编码
print(sys.getdefaultencoding())
# 获取内存数据存到文件里的默认编码
print(sys.getfilesystemencoding())
二、shutil模块
shutil模块是针对文件的高级操作,包括文件、文件夹和压缩包处理。
主要方法如下:
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
# write by congcong
import shutil,os #高级文件操作
# shutil.copyfileobj()打开然后拷贝文件
f1 = open(file='before_revise.txt',mode='r',encoding='utf-8')
f2 = open(file='bf_re_copy.txt',mode='w',encoding='utf-8')
shutil.copyfileobj(f1,f2,length=16)
# 直接拷贝文件
shutil.copyfile('before_revise.txt','before_revise.txt2')
# shutil.copymode(src,dst) # 仅拷贝权限,内容,组,用户均不变 。src表示原文件,dst表示拷贝的文件
shutil.copymode('staff_table.new','before_revise.txt2')
# shutil.copystat(src,dst) # 拷贝状态信息,包括:mode bits,atime,mtime,flags
shutil.copystat('staff_table.new','before_revise.txt2')
# shutil.copy(src,dst) # 拷贝文件和权限,相当与 copyfile()+ copymode()
# shutil.copy2(src,dst) # 拷贝文件和状态信息
# shutil.copytree() # 递归的去拷贝文件
# shutil.ignore_patterns() # 不拷贝指定文件
#shutil.copytree('my_module','module_new',ignore=shutil.ignore_patterns('__init__.py','ignore.py'))
# shutil.rmtree()# 递归的删除文件,可以忽略某些错误
# shutil.move() # 递归的移动文件,相当于剪切
#shutil.move('module_new','pack') # 将 module_new中的文件全部剪切到 pack
# shutil.make_archive(base_name,format,...)
'''
创建压缩包并返回文件路径
base_name:压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径
如:myfile => 保存至当前路径
如:/users/cc/myfile => 保存到/users/cc/下
format:压缩包种类,'zip','tar','bztar','gztar'
root_dir:要压缩的文件夹路径(默认当前目录)
owner:用户,默认当前用户
group:组,默认当前组
logger:用于记录日志,通常是logging.Logger对象
shutil对压缩包的处理是调用了 ZipFile 和 TarFile 两个模块来进行的
'''
shutil.make_archive('D:pycharmpack','zip','pack')
import zipfile
# 压缩
# z = zipfile.ZipFile('pack2.zip','w')
# z.write('write.txt')
# z.write('迭代器.py')
# z.close()
# 解压
z = zipfile.ZipFile('pack2.zip','r')
z.extractall('p2') # extractall 可引出的,拔出的 解压后的压缩包名叫p2
z.close()
import tarfile # 打包并不压缩
# 压缩
tar = tarfile.open('myfile.tar','w')
tar.add('D:pycharmTest1Second_moduledatetime模块.py',arcname='f_read.zip') # arcname 指定打包后的名字
tar.add('D:pycharmTest1Second_modulemy_module',arcname='my_mod.zip')
tar.close()
# 解压
tar = tarfile.open('myfile.tar','r')
tar.extractall('D:pycharm')
tar.close()