第四章、常用模块

编辑本随笔

(一)、os模块

os.getcwd()#python解释器路径
os.listdir('E:Code')#查看指定目录下的文件
os.removedirs()#删除多个目录
os.remove()#删除文件
#判断是否为文件
os.path.isfile()
#
判断是否为目录
os.path.isdir()
#
判断是否为绝对路径
print(os.path.isabs('E:Code'))
#
判断是否文件或目录存在
print(os.path.exists('E:Code'))
#
分割文件名和路径
print(os.path.split('E:CodePyCharmLufChapter04my_os.py'))
#
分割文件后缀
print(os.path.splitext('E:CodePyCharmLufChapter04my_os.py'))
#
分割文件或目录所在磁盘
print(os.path.splitdrive('E:CodePyCharmLufChapter04my_os.py'))
#
获取文件所在目录
print(os.path.dirname('E:CodePyCharmLufChapter04my_os.py'))
#
获取绝对路径名
print(os.path.abspath('E:CodePyCharmLufChapter04my_os.py'))
#
获取文件名
print(os.path.basename('E:CodePyCharmLufChapter04my_os.py'))
#
运行shell命令,返回0为执行正确,非0表示执行错误
os.system()
#
读取环境变量为HOME的值
os.getenv('HOME')
#
获取操作系统所有环境变量
os.environ
#
设置系统环境变量,有则返回,无则创建,只在当前terminal下有效,即当前程序
os.environ.setdefault('HOME','/home/ya')
#
当前平台使用的行终止符
os.linesep
#
获取当前系统平台
os.name
#
重命名
os.rename('old','new')
#
创建多级目录
os.makedirs('C:pythonosmkdirs')
#
创建单个目录
os.mkdir()
#
获取文件属性
os.stat('E:CodePyCharmLufChapter04my_os.py')
#
修改文件权限与时间戳
os.chmod('E:CodePyCharmLufChapter04my_os.py',777)
#
获取文件大小
os.path.getsize()
#
结合目录名与文件名
os.path.join()
#
改变工作目录
os.chdir()
#
获取当前终端大小
os.get_terminal_size()
#
终止当前进程,py3已无改方法
os.exit()
#
杀死进程
os.kill()

(二)、sys模块

#接收参数,传参数给脚本
sys.argv()
#
退出程序,
sys.exit(0)
#python
版本
sys.version
#int
最大值
sys.maxsize()
#python
模块搜索路径
sys.path()
#
当前系统版本
sys.pltform()
#
标准输出
sys.stdout()
#
标准输入
sys.stdin.readline()[:-1]
#
获取递归最大层数
sys.getrecursionlimit()
#
设置递归最大层数
sys.setrecursionlimit(120)
#
获取解释器默认编码
sys.getdefaultencoding()
#
获取内存数据存到文件里的默认编码
sys.getfilesystemencoding()

(三)、time模块

local_time=time.localtime()#获取当前本地时间(北京时间)
# local_time.tm_year
# local_time.tm_mon
# local_time.tm_mday
# local_time.tm_hour
# local_time.tm_min
# local_time.tm_sec
# local_time.tm_wday weekday
# local_time.tm_yday
一年中的第几天
# local_time.tm_isdst 是否为夏时令

time.time()#获取当前时间戳
time.gmtime()#类似localtime,将是一个时间戳转换为UTC时区
time.mktime(t)#将一个struct_time转换为时间戳
time.sleep()#将线程推迟指定时间,单位为秒
time.asctime()#把一个表示时间的元组或者struct_time表示为'Sun Oct 1 120449 2017'格式,没有参数则将time.localtime()传入
time.ctime()#把一个时间戳转换为time.asctime()形式,如果参数未给或为None时,将time.time()作为参数,先当于time.asctime(time.localtime(sec))
time.strftime()#
把一个表示时间的元组或者struct_time转化为格式化的时间字符串,未指定则将time.localtime()传入
time.strptime()#把一个格式化时间字符串转换为struct_time,即将strftime()逆操作

(四)、datetime模块

import datetime
"""
datetime.date#
表示日期类,属性有yearmonthday
datetime.time#
表示时间类,常用属性有hourminutesecondmicrosecond
datetime.datetime#
表示日期时间
datetime.timedelta#
表示时间间隔
datetime.tzinfo#
与时区有关信息

d=datetime.datetime.now()#
返回当前的datetime日期类型
d.timestamp()
d.today()
d.year
d.timetuple()

datetime.date.fromtimestamp()#
把一个时间戳转换为datetime日期类型
"""
#时间替换
d=datetime.datetime.now()
print(d)
d=d.replace(year=2017)
print(d)

(五)、random模块

import random
random.randint(1,100)#
x,y之间的随机数,包含起始值
random.randrange(1,100)#x,y之间的随机数,不包含起始值
random.random()#随机浮点数
random.choice('aaabbccc')#从字符串中返回随机字符
random.sample('aaaa',3)#从字符串中返回指定数量的字符
random.shuffle("123456abc")#打乱字符串
#生成随机字符串
import string
''.join(random.sample(string.ascii_lowercase+string.digits+string.punctuation,16))

(六)、shutil模块

import shutil
#
将文件对象内容拷贝到另一个文件对象中
f1=open('my_os.py','rb')
f2=open('my_os_new.py','wb')
shutil.copyfileobj(f1,f2)
f1.close()
f2.close()

#
拷贝文件
shutil.copyfile()
#
仅拷贝权限,内容和组都不变
shutil.copymode()
#
拷贝状态信息,包括mode bits,atime,mtime,flags
shutil.copystat()
#
拷贝文件和权限
shutil.copy()
#
拷贝文件和状态信息
shutil.copy2()
#
拷贝文件目录
shutil.copytree()
#
拷贝指定类型文件
# shutil.ignore_patterns('*.pyc')忽略的文件,有则报错
shutil.copytree('s','d',shutil.ignore_patterns('*.pyc'))
#
删除目录,ignore_errors忽略错误
shutil.rmtree('path',ignore_errors=True)
#
递归式移动,重命名,剪切
shutil.move()

#
压缩打包
shutil.make_archive()
#base_name:
压缩包的文件名,也可以是路径,只是文件名则保存到当前目录,否则保存到指定路径
#format:压缩包类型,ziptarbztargztar
#root_dir:
要压缩的文件夹路径,默认为当前目录
#owner:用户,默认当前用户
#group:组,默认为当前组
#logger:用于记录日志,通常为logging.Logger对象
#解压
shutil.unpack_archive()
#filename:
解压的文件名
#extract_dir:解压到指定路径
#format:压缩包格式

import zipfile
z=zipfile.ZipFile("test.zip",'w')
z.write('test.py')
z.write('my_shutil.py')
z.close()

(七)、序列化模块

把内存中的数据通过网络共享给别人

把内存中的数据存入硬盘。json和pickle只能dump和load一次。

1、json只能序列化str,int,tuple,list,dict。跨平台,跨语言

定义了不同语言之间的交互规则,数据简洁

import json
#
序列化,可dump多次,但数据会损坏
json.dump(obj=None,fp='fileobj')#变成字符串并存入到文件对象
json.dumps(obj=None)#将对象变成字符串赋值给变量,即存入内存。可写入硬盘或可通过网络发送。可以跨平台跨语言共享数据
#反序列化,只能load一次
json.load()#从文件对象中加载数据
json.loads()#将字符串转换成相应类型

处理非表准json数据时,可以使用https://pypi.org/project/demjson/

2、pickle支持python里所有数据类型,只能在python中使用

import pickle
pickle.dump(data,file_obj)#
二进制模式写入文件
pickle.dumps()#转换成二进制数据
pickle.load()#pkl文件中加载成对象
pickle.loads()

3、shelve,对pickle封装,可dump和load多次,仅支持python

f=shelve.open('shelve')#打开数据文件,不要后缀名
f.keys()
f.items()
f.get('name')#
获取name对应的数据
f.get('info')
del
f['name']#
删除
f['name']='new name'#可直接修改
f.close()

4、xml,通过<>来标记数据

import xml.etree.ElementTree as ET
tree=ET.parse('xml')
root=tree.getroot()
#
遍历xml
for child in root:
print(child.tag,child.attrib)
for
i in child:
print(i.tag,i.text)
#
只遍历year节点
for node in root.iter('year'):
print(node.tag,node.text)

#
修改
for node in root.iter('year'):
new_year=int(node.text)+1
node.text=str(new_year)
node.set('updated','yes')#
添加一个属性
tree.write('new_xml')
#
删除
for country in root.findall('country'):
rank=int(country.find('rank').text)
if
rank > 50:
root.remove(country)
tree.write('new_xml')

(八)、configparser模块

import configparser
config=configparser.ConfigParser()
config.read('conf.ini')
print(config.sections())
print(config.default_section)
# #'clear', 'get', 'getboolean', 'getfloat', 'getint', 'items', 'keys', 'name', 'parser', 'pop', 'popitem', 'setdefault', 'update', 'values'
# print(config['CLIENT'].keys())
# print(config['CLIENT']['port'])

#
每个节点都会出现DEFAULT的内容
for k in config['CLIENT']:
print(k)

for
k,v in config['CLIENT'].items():
print(k,v)

#
判断是否有某参数
if 'server' in config['CLIENT']:print('in')

#
获取某节点的所有key
print(config.options('group1'))

#
增加
config.add_section('group3')
config['group3']['name']='test'
config['group3']['age']='18'
config.write(open('t.ini','w'))
#
删除某一节点值
config.remove_option('group1','k2')
config.write(open('conf.ini','w'))
#
删除某一节点
config.remove_section('group1')
config.write(open('conf.ini','w'))

 (八)、加密模块

 

原文地址:https://www.cnblogs.com/yaya625202/p/8672498.html