码迷,mamicode.com
首页 > 编程语言 > 详细

Python内置模块181101

时间:2018-11-07 22:11:45      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:mysql   dota   换行   enc   整数   iges   tree   接受   bitbucket   

模块的定义使用

1、模块的定义

  • 模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的Python文件(文件名:test.py,模块名:test)
  • 包:用来从逻辑上组织模块的,本质是一个目录(必须带有一个__init__.py的文件)。

    2、导入方法

import mod1
import mod1,mod2,mod3
from mod1 import *  #导入mod1中所有的变量,函数等(不建议使用)
from mod1 import say_hello as say_hello2  #当与本地模块冲突是可以使用别名
  • import mod1 和 from mod1 import *
# Author:Li Dongfei
import mod1
mod1.say_hello('dongfei')
# Author:Li Dongfei
from mod1 import *
say_hello('dongfei')
  • 加环境变量
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

3、import的本质

导入模块的本质就是把Python文件解释一遍

  • 直接import相当于将mod1的代码赋值给mod1,需要用mod1.xxx调用
  • from xxx import是直接将mod1中代码放到当前代码中执行,所有可以直接调用
  • 导入包的本质是在解释执行包下的__init__.py文件

    4、导入优化

from mods import *

5、模块的分类

  • 标准库
  • 开源模块
  • 自定义模块

内置模块

1、time和datetime模块

# Author:Li Dongfei
import time,datetime
print(time.time())  #时间戳
print(time.localtime().tm_year)  #本地时间,元组形式,可接受时间戳
print(time.gmtime())  #utc时间,元组形式,可接受时间戳
print(time.mktime(time.localtime()))  #元组形式转换为时间戳
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))  #自定义字符串格式
print(time.strptime("2018-11-05 17:42:07","%Y-%m-%d %H:%M:%S"))  #字符串转换为元组格式
print(time.asctime())  #接受元组
print(time.ctime())  #接受时间戳
print(datetime.datetime.now())  #获取当前时间
print(datetime.datetime.now()+datetime.timedelta(3))  #三天后的时间
print(datetime.datetime.now()+datetime.timedelta(-3))  #三天前的时间
print(datetime.datetime.now()+datetime.timedelta(hours=3))  #三小时后的时间
print(datetime.datetime.now()+datetime.timedelta(minutes=3))  #三分钟后的时间

2、random模块

# Author:Li Dongfei
import random
print(random.random())  #随机浮点数,0 - 1
print(random.randint(1,7))  #随机整数,1 - 7(包括7)
print(random.randrange(1,9))  #随机整数,1 - 9(不包括9)
print(random.choice('dongfei'))  #随机从字符串,元组,列表等中取一个元素
print(random.sample('hello',2))  #从字符串中随机取2位
print(random.uniform(1,3))  #取浮点数1 - 3
list1 = [1,2,3,4,5,6,7,8]
random.shuffle(list1)
print(list1)
# 验证码生成代码
checkcode=''
for i in range(4):
    current = random.randrange(0,4)
    if current == i:
        tmp = chr(random.randint(65,90))
    else:
        tmp = random.randint(0,9)
    checkcode += str(tmp)
print(checkcode)

3、os模块

# Author:Li Dongfei
import os
print(os.getcwd())  #当前文件所在目录
os.chdir("C:\\Users")  #切换目录
os.chdir(r"C:\Users")
print(os.curdir)  #返回当前目录
print(os.pardir)  #返回父目录
#os.makedirs(r"C:\a\b\c\d")  #递归创建目录
#os.removedirs(r"C:\a\b\c\d")  #递归删除目录(清理空文件夹)
#os.mkdir(r"C:\e")  #创建一个目录
#os.rmdir(r"C:\e")  #删除一个目录
print(os.listdir("."))  #列出当前目录的文件及文件夹
#os.remove("xxx")  #删除一个文件
#os.rename("oldname","newname")  #重命名
print(os.stat(r'D:\PycharmProjects\p1810\hello.py'))  #查看文件的信息
print(os.sep)  #获取操作系统的路径分隔符
print(os.linesep)  #获取换行分隔符
print(os.pathsep)  #获取环境变量分隔符
print(os.environ)  #获取环境变量
print(os.name)  #显示系统名
os.system("dir")  #执行命令
#os.path.abspath()  #获取文件的绝对路径
print(os.path.split(r"C:\a\b\c.txt"))
print(os.path.dirname(r"C:\a\b\c.txt"))  #获取目录名
print(os.path.basename(r"C:\a\b\c.txt"))  #获取文件名
print(os.path.exists(r"C:\a\b\c.txt"))  #判读路径是否存在
print(os.path.isabs(r"C:\a\b\c.txt"))  #判读是否为绝对路径
print(os.path.isfile(r"C:\a\b\c.txt"))  #判读是否为一个文件
print(os.path.getatime(r'D:\PycharmProjects\p1810\hello.py'))
print(os.path.getmtime(r'D:\PycharmProjects\p1810\hello.py'))
print(os.path.getctime(r'D:\PycharmProjects\p1810\hello.py'))

4、sys模块

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0)
sys.version        获取Python解释程序的版本信息
sys.maxint         最大的Int值
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]

5、shutil模块

# Author:Li Dongfei
import shutil
f1 = open("1.txt",encoding="utf-8")
f2 = open("2.txt","w")
shutil.copyfileobj(f1,f2)  #copy文件
shutil.copyfile("2.txt","3.txt")
shutil.copymode("3.txt","4.txt")  #仅copy权限
shutil.copystat("4.txt","5.txt")  #copy状态信息
shutil.copy("4.txt","5.txt")  #copy文件和权限
shutil.copy2("4.txt","5.txt")  #copy文件和状态信息
shutil.copytree("D:\PycharmProjects","D:\PycharmProjects2")  #递归cp
shutil.rmtree("D:\PycharmProjects2")  #递归删除
shutil.move("5.txt","6.txt")  #移动文件
shutil.make_archive("PycharmProjects","zip","D:\PycharmProjects")  #压缩归档

6、shelve模块

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

# Author:Li Dongfei
import shelve,datetime
d = shelve.open('shelve_test')  #打开一个文件
info = {'age':22,"job":'it'}
name = ["redis","mysql","sqlserver"]
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"))

7、configparser模块

  • 写配置文件
# Author:Li Dongfei
import configparser
config = 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'  # mutates the parser
topsecret['ForwardX11'] = 'no'  # same here
config['DEFAULT']['ForwardX11'] = 'yes'
with open('example.ini', 'w') as configfile:
    config.write(configfile)
  • 查配置文件
# Author:Li Dongfei
import configparser
conf = configparser.ConfigParser()
conf.read("example.ini")
print(conf.defaults())
print(conf.sections())
print(conf['bitbucket.org']['user'])  #查
sec = conf.remove_section('bitbucket.org')  #删
conf.write(open('example2.ini',"w"))

8、hashlib

# Author:Li Dongfei
import hashlib
m = hashlib.md5()
m.update(b"Hello")
print(m.hexdigest())
m.update(b"World")
print(m.hexdigest())
m2 = hashlib.md5()
m2.update(b"HelloWorld")
print(m2.hexdigest())

9、re模块

'.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
'^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
'$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",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") 是匹配不到的
'\Z'    匹配字符结尾,同$
'\d'    匹配数字0-9
'\D'    匹配非数字
'\w'    匹配[A-Za-z0-9]
'\W'    匹配非[A-Za-z0-9]
's'     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'
'(?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'}

示例:

# Author:Li Dongfei
import re
res1 = re.match("^dong","dong123fei")
res2 = re.match("^dong\d","dong123fei")  #\d代表一个数字
res3 = re.match("^dong\d+","dong123fei")  #+代表一个或多个
print(res1.group(),res2.group(),res3.group())

Python内置模块181101

标签:mysql   dota   换行   enc   整数   iges   tree   接受   bitbucket   

原文地址:https://www.cnblogs.com/L-dongf/p/9925979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!