python基础学习04

Posted whitebai2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础学习04相关的知识,希望对你有一定的参考价值。

模块定义:用来从逻辑上组织python代码(变量,函数,,逻辑),本质就是.py结尾的python文件,实现一个功能
包定义:用来从逻辑上组织模块的,本质就是一个目录,必须带有__init__.py文件
导入:import module_name1,module_name2 from package_name 或 module_name import *
from package_name 或 module_name import func as func_name
import模块本质:导入模块的本质就是把python文件解释一遍
import包本质:导入包的本质就是执行该包下的__init__.py文件
import包时,可以在__init__.py文件中,导入该包内的模块(from . import module_name),这样,导入包时,就可以调用该包下的其它模块
模块的分类:
1)标准库
2)开源模块
3)自定义模块


# 时间模块 timedatetime
import time

# 1970-01-01 00:00:00到当前的秒数 时间戳
print(time.time())
# 本地时间 结构化的时间 可以传时间戳
print(time.localtime())
# 休眠
time.sleep(1)
# 将时间戳转换成UTC标准时间的结构化时间
print(time.gmtime(time.time()))
# 将结构化的时间转换成时间戳
print(time.mktime(time.localtime()))
# 将结构化时间转换成字符串
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 将字符串转化成结构化时间
print(time.strptime(‘2016-08-20 14:31:52‘, ‘%Y-%m-%d %H:%M:%S‘))
# 将结构化时间转换成英文字符串,可接收元组
print(time.asctime())
# 将结构化时间转换成英文字符串,可接收时间戳
print(time.ctime())


import datetime

# 获取当前时间
print(datetime.datetime.now())
# 时间计算,不能单独使用
print(datetime.datetime.now()+datetime.timedelta(-3))
print(datetime.datetime.now()+datetime.timedelta(hours=-3))


# 随机模块
import random

# 随机0-1浮点数
print(random.random())
# 随机1-3整数
print(random.randint(1, 3))
# 随机0-2整数
print(random.randrange(1, 3))
# 在序列类型中随机取值
print(random.choice(‘hello‘))
print(random.choice([1, 2, 3, 4]))
# 在序列类型中随机取2
print(random.sample(‘hello‘, 2))
# 随机区间内浮点数
print(random.uniform(2, 3))
# 将有序列表随机打乱
i = [1, 2, 3, 4]
random.shuffle(i)
print(i)


os模块

# 获取当前目录
print(os.getcwd())
# 切换目录
os.chdir("/home")
print(os.getcwd())
# 返回当前目录
print(os.curdir)
# 返回上一级目录
print(os.pardir)
# 递归创建目录os.makedirs(os.path.dirname(os.path.abspath(__file__)) + "/a/b/c")# 递归删除目录 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.removedirs(os.path.dirname(os.path.abspath(__file__)) + "/a/b/c")# 创建目录os.mkdir(os.path.dirname(os.path.abspath(__file__)) + "/a")# 删除空目录os.rmdir(os.path.dirname(os.path.abspath(__file__)) + "/a")# 显示目录内容print(os.listdir("."))# 重命名os.rename(os.path.dirname(os.path.abspath(__file__)) + "/a", os.path.dirname(os.path.abspath(__file__)) + "/b")# 获取文件信息print(os.stat("b/123"))# 输出操作系统特定的路径分隔符print(os.sep)# 输出当前操作系统换行符print(os.linesep)# 输出用于分隔文件路径的字符串print(os.pathsep)# 输出环境变量print(os.environ)# 输出当前系统平台print(os.name)# 执行系统命令os.system("dir")# 获取当前文件的绝对路径print(os.path.abspath(__file__))# 将path分割目录和文件名print(os.path.split(os.path.dirname(os.path.abspath(__file__)) + "/b/123"))# 返回path的目录print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)) + "/b/123"))# 返回path目录中的文件名print(os.path.basename(os.path.dirname(os.path.abspath(__file__)) + "/b/123"))# 判断路径是否存在print(os.path.exists(os.path.dirname(os.path.abspath(__file__)) + "/b/123"))# 判断是否是绝对路径print(os.path.isabs("home"))# 判断是否是文件print(os.path.isfile("b/123"))# 将多个路径组合并返回,第一个绝对路径之前的参数将被忽略print(os.path.join(‘/home‘, ‘a.txt‘))# 获取文件或目录的最后存取时间print(os.path.getatime(os.path.dirname(os.path.abspath(__file__))))# 获取文件或目录的最后修改时间print(os.path.getatime(os.path.dirname(os.path.abspath(__file__))))shutil模块http://www.cnblogs.com/wupeiqi/articles/4963027.html# 将文件内容拷贝到另一个文件中,可以部分内容f1 = open(‘123‘, encoding=‘utf-8‘)f2 = open(‘1234‘, ‘w‘, encoding=‘utf-8‘)shutil.copyfileobj(f1, f2)# 拷贝文件shutil.copyfile(‘123‘, ‘1234‘)# 仅拷贝权限.内容,组,用户均不变shutil.copymode(‘123‘, ‘1234‘)# 拷贝状态的信息,包括:mode bits,atime,mtime,falgsshutil.copystat(‘123‘, ‘1234‘)# 拷贝文件和权限shutil.copy(‘123‘, ‘12345‘)# 拷贝文件和状态信息shutil.copy2(‘123‘, ‘123456‘)# 递归的去拷贝文件shutil.copytree(os.path.dirname(os.path.abspath(__file__)), os.path.dirname(os.path.dirname(os.path.abspath(__file__)))+"/新模块")# 递归删除目录shutil.rmtree(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))+"/新模块")# 递归移动文件shutil.copytree(os.path.dirname(os.path.abspath(__file__)), os.path.dirname(os.path.dirname(os.path.abspath(__file__)))+"/新模块")# 创建压缩包并返回文件路径,例如:zip,tar# base_name:压缩包的文件名,也可以是压缩包的路径.只是文件名时,则保存至当前目录,否则保存至指定路径,# 如:www =>保存至当前路径# 如:/user/wupeiqi/www =>保存至/user/wupeiqi/ www是包名# format:压缩包种类,"zip","tar","bztar","gztar"# root_dir:要压缩的文件夹路径(默认当前目录)# owner:用户,默认当前用户# group:组,默认当前组# logger:用于记录日志,通常是logging.Logger对象# 注:压缩路径不要包含程序所在的路径,不然会将自已再压缩一层shutil.make_archive(‘abc‘, "zip", os.path.dirname(os.path.dirname(os.path.abspath(__file__))))# shelve模块是一个简单的K,V将内在数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式import datetimeimport shelvewith shelve.open(‘shelve_test‘) as d: info = { ‘age‘: 20, "job": ‘it‘ } name = [‘alex‘, ‘rain‘, ‘test‘] d[‘name‘] = name d[‘info‘] = info d["date"] = datetime.datetime.now()d = shelve.open(‘shelve_test‘)print(d.get(name))print(d.get("info"))print(d.get("date"))PyYAML模块http://pyyaml.org/wiki/PyYAMLDocumentationConfigParser模块 用于生成和修改常见配置文档,当前模块的名称在python3中变更为configparser# 写文件import configparserconfig = configparser.ConfigParser()config["DEFAULT"] = { ‘ServerAliveInterval‘: ‘45‘, ‘Compression‘: ‘yes‘, ‘CompressionLevel‘: ‘9‘}config[‘bitbucket.org‘] = {}config[‘bitbucket.org‘][‘User‘] = ‘hg‘config[‘topsecret.server.com‘] = {}topsecret = config[‘topsecret.server.com‘]topsecret[‘Host Port‘] = ‘50022‘topsecret[‘ForwardX11‘] = ‘no‘config[‘DEFAULT‘][‘ForwardX11‘] = ‘yes‘with open(‘example.ini‘, ‘w‘) as configfile: config.write(configfile)# 读文件import configparserconfig = configparser.ConfigParser()config.read(‘example.ini‘)# 取除default以外的所有节点print(config.sections())# 取default的内容print(config.defaults())# 取节点内容print(config[‘bitbucket.org‘][‘user‘])# 删除节点config.remove_section(‘bitbucket.org‘)config.write(open(‘example1.ini‘, ‘w‘))# hashlib模块 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法import hashlibm = hashlib.md5()m.update(‘天王盖地虎‘.encode(encoding=‘utf-8‘))# 十进制加密print(m.digest())# 十六进制加密print(m.hexdigest())s = hashlib.sha1()s.update(b‘Hello‘)print(s.digest())print(s.hexdigest())# 比较常用s1 = hashlib.sha256()s1.update(b‘Hello‘)print(s1.digest())print(s1.hexdigest())# hmac 用于消息加密import hmach = hmac.new(b‘12345‘, ‘天王盖地虎‘.encode(encoding=‘utf-8‘))print(h.digest())print(h.hexdigest())re模块‘.‘ 默认匹配除 之外的任意一个字符,若指定flag DOTALL, 则匹配任意字符,包括换行‘^‘ 匹配字符开头,若指定flags MULTILINE, 这种也可以匹配上(r"^a", " abc eee", flags=re.MULTILINE)‘$‘ 匹配字符结尾,或e.search("foo$", "bfoo sdfsf", flags=re.MULTILINE).group()也可以‘*‘ 匹配 * 号前的字符0次或多次,re.findall("ab*", "cabb3abcbbac")结果为[‘abb‘, ‘ab‘, ‘a‘]‘+‘ 匹配前一个字符1次或多次,re.findall("ab+", "ab+cd+abb+bba")结果[‘ab‘, ‘abb‘]‘?‘ 匹配前一个字符1次或0次‘{m}‘ 匹配前一个字符m次‘{n,m}‘ 匹配前一个字符n到m次,re.findall("ab{1,3}", "abb abc abbcbbb")结果‘abb‘, ‘ab‘, ‘abb‘]‘|‘ 匹配 | 左或 | 右的字符,re.search("abc|ABC", "ABCBabcCD").group()结果‘ABC‘‘(...)‘ 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group()结果abcabca456c‘A‘ 只从字符开头匹配,re.search("Aabc", "alexabc")是匹配不到的‘‘ 匹配字符结尾,同$‘d‘ 匹配数字0 - 9‘D‘ 匹配非数字‘w‘ 匹配[A - Za - z0 - 9]‘W‘ 匹配非[A - Za - z0 - 9]‘s‘ 匹配空白字符、 、 、 , re.search("s+", "ab c1 3").group()结果‘ ‘‘(?P<name>...)‘ 分组匹配re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})", "371481199306143242").groupdict("city")结果{‘province‘: ‘3714‘, ‘city‘: ‘81‘, ‘birthday‘: ‘1993‘}import reres = re.match(‘^abcd+‘, ‘abc321jbakk333‘)res = re.match(‘a.+k‘, ‘abc321jbakk333‘)res = re.search(‘c.+k‘, ‘abc321jbakk333‘)res = re.search(‘j[a-zA-Z]+k‘, ‘abc321jbAakk333‘)print(res.group())res = re.findall(‘[0-9]{1,3}‘, ‘aa1x2k345kkd‘)print(res)res = re.search(‘(?P<id>[0-9]+)(?P<name>[a-zA-z]+)‘, ‘[email protected]‘).groupdict()print(res)res = re.split(‘[0-9]+‘, ‘abc12de3f45GH‘)print(res)res = re.sub(‘[0-9]+‘, ‘|‘, ‘abc12de3f45GH‘, count=2)print(res)res = re.search(‘\\\\‘, ‘akdbskkdiek‘)print(res.group())# 忽略大小写res = re.search(‘[a-z]+‘, ‘akdbskA‘, flags=re.I)print(res.group())














































































以上是关于python基础学习04的主要内容,如果未能解决你的问题,请参考以下文章

Python学习之路——基础04篇

D04-C语言基础学PYTHON

python基础04

鲲鹏云实验-Python+Jupyter机器学习基础环境

测试复习大纲

100天精通Python丨基础知识篇 —— 04变量和基础数据类型详解