新普金娱乐网址


有关QT版本的设置配置的有的困惑

(转发)人工智能在围棋程序中的应用天文——清华大学直属中学(施遥)

第陆周 day5 python学习笔记

  • 三月 09, 2019
  • 天文
  • 没有评论

1.软件开发的正规目录结构

模块

越是详细音讯参报考博士博士客:http://www.cnblogs.com/alex3714/articles/5765046.html

一、定义:

模块:用来从逻辑上集体python代码(变量,函数,类,逻辑:实现一个效益),

真相正是.py结尾的python文件(文件名:test.py,对应模块名:test)

包:用来从逻辑上协会模块的,本质正是一个目录(必须含有三个__init__.py的文件)

天文 1       
天文 2

二 、导入方法

import module_alex,

调用:print(module_alex.name)
   module_alex.say_hello()

导入多个模块:import module1_name,import module2_name

把module_alex中的全体代码导入:from module_alex import *(不提出利用*,

它的原形是复制maodule_alex中的代码到方今先后,变量有再度的话执行当前程序的变量)

from module_alex import logger as logger_alex (起各自名)

导入三个:from module_alex import m1,m2,m3

天文 3

三 、import本质(路径搜索和查找路径)

天文 4

import
module_alex将module_alex的装有代码解释3回并赋值给2个变量module_alex,调用通过module_alex.***的形式

(import test  test=”test.py all code”)

(from test import name    name=”code”)

导入模块的本色正是把python文件说美素佳儿(Aptamil)遍。

import
module_alex—>module_alex.py(是文件就肯定有门路)—->module_alex.py的门径—->sys.path(先在当前义务找,再在系统环境变量中找)

导入包的真相正是履行该包下边包车型大巴__init__.py文件

2.python中的模块

④ 、导入优化

from module_test import test

天文 5

main.py

天文 6天文 7

1 import sys,os
2 print(sys.path)
3 
4 x=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
5 sys.path.append(x)
6 import module_alex
7 module_alex.say_hello()

main

__init__.py

天文 8天文 9

1 print("from the package_test")
2 
3 #import test1 #test="test1.py all code".test1.test()
4 from.import test1  #相对导入,从当前目录下导入test1,相对于__init__的路径

init

test1.py

天文 10天文 11

1 def test():
2     print("in the test1")

test1

module_test.py

天文 12天文 13

1 def test():
2     print("in the module_test")

module_test

test.py

天文 14天文 15

1 import module_test
2 #from module_test import test
3 def logger():
4     module_test.test()
5     print('in the logger')
6 
7 def search():
8     module_test.test()
9     print("in the search")

test

module_alex.py

天文 16天文 17

1 name="alex"
2 def say_hello():
3     print("hello alex")
4 def logger():
5     pass
6 def running():
7     pass

module_alex

p_test.py

天文 18天文 19

1 import package_test
2 #1.run __init__.py--->test1="test1.py all code".test1
3 
4 package_test.test1.test()

p_test

(1)定义

伍 、模块的归类:

a:标准库(内置模块)、b:开源模块(第③方模块)、c:自定义模块

模块:用来从逻辑上集体python代码(变量、函数、类、处理逻辑:实现二个职能),本质上正是.py结尾的文本,(文件名test.py,对应的模块名test)

1.time与datetime

在Python中,常常有那三种办法来代表时间:1)时间戳2)格式化的时间字符串3)元组(struct_time)共捌个要素。由于Python的time模块实现重点调用C库,所以各种平台大概截然不相同。

UTC(Coordinated Universal
Time,世界和谐时)亦即格林威治天文时间,世界标准时间。在中原为UTC+8。DST(Daylight
Saving Time)即夏令时。

时间戳(timestamp)的艺术:常常来说,时间戳表示的是从一九七零年八月一日00:00:00始发按秒总括的偏移量。大家运维“type(time.time())”,再次回到的是float类型。再次来到时间戳格局的函数主要有time(),clock()等。

天文 20

元组(struct_time)方式:struct_time元组共有捌个因素,重回struct_time的函数主要有gmtime(),localtime(),strptime()。

import time
print(time.localtime())
'''--->time.struct_time(tm_year=2017, tm_mon=10, tm_mday=24,
 tm_hour=10, tm_min=36, tm_sec=20, tm_wday=1, tm_yday=297, tm_isdst=0)'''

time:

天文 21天文 22

 1 import time
 2 print(time.localtime())
 3 '''--->time.struct_time(tm_year=2017, tm_mon=10, tm_mday=24,
 4  tm_hour=10, tm_min=36, tm_sec=20, tm_wday=1, tm_yday=297, tm_isdst=0)'''
 5 
 6 #Variables:
 7 print(help(time))
 8 print(time.timezone) # difference in seconds between UTC and local standard time
 9 print(time.altzone) #difference in  seconds between UTC and local DST time
10 print(time.daylight) #whether local time should reflect DST
11 #Functions:
12 print(time.time()) # return current time in seconds since the Epoch as a float
13 time.sleep(2) # delay for a number of seconds given as a float
14 print(time.gmtime())#将时间戳转化为struct_time,不传入参数的话将本地时间换算成UCT时间,传入参数的话,"1970"+参数
15 print(time.localtime())#将时间戳转化为struct_time,不传入参数的话就是本地时间,传入参数同上,不过hour+8
16 
17 x=time.localtime()
18 print(x.tm_year) #提取"年"
19 
20 print(time.mktime(x)) #元组形式转化为时间戳
21 print(time.strftime("%Y-%m-%d %H:%M:%S",x)) #元组形式转化为格式化字符串
22 #%Y相当于x.tm_year  %m相当于x.tm_mon
23 print(time.strptime("2017-10-24 13:36:46","%Y-%m-%d %H:%M:%S")) #格式化字符串转化为元组形式
24 #以后面的格式到前边找对应的值,x.tm_year=2017,x.tm_mon=10
25 
26 print(time.asctime())#将元组转化为字符串的格式,不写参数传入的就是本地时间
27 print(time.ctime())#将时间戳转化为字符串的格式,不写参数传入的就是本地时间
28 
29 import datetime
30 print(datetime.datetime.now())  # 返回 2017-10-24 14:52:46.098161
31 print(datetime.date.fromtimestamp(time.time()) )  # 时间戳直接转成日期格式 2017-10-24
32 print("-----")
33 print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
34 print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
35 print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
36 print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
37 print("-----")
38 c_time  = datetime.datetime.now()
39 print(c_time.replace(minute=3,hour=12)) #时间替换

time

strftime(“格式”,struct_time)--->“格式化的字符串”
strptime(“格式化的字符串”,“格式”)--->struct_time

天文 23

格式参照:

%``a    本地(locale)简化星期名称

%``A    本地完整星期名称

%``b    本地简化月份名称

%``B    本地完整月份名称

%``c    本地相应的日期和时间表示

%``d    一个月中的第几天(``01 - 31``)

%``H    一天中的第几个小时(``24``小时制,``00 - 23``)

%``I    第几个小时(``12``小时制,``01 - 12``)

%``j    一年中的第几天(``001 - 366``)

%``m    月份(``01 - 12``)

%``M    分钟数(``00 - 59``)

%``p    本地am或者pm的相应符

%``S    秒(``01 - 61``)

%``U    一年中的星期数。(``00 - 53``星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第``0``周。

%``w    一个星期中的第几天(``0 - 6``,``0``是星期天)

%``W    和``%``U基本相同,不同的是``%``W以星期一为一个星期的开始。

%``x    本地相应日期

%``X    本地相应时间

%``y    去掉世纪的年份(``00 - 99``)

%``Y    完整的年份

%``Z    时区的名字(如果不存在为空字符)

%``%    ‘``%``’字符

 

更多:http://qinxuye.me/article/details-about-time-module-in-python/

 

包package:用来从逻辑上集人体模型块的,本质上正是贰个目录(必须含有3个__init__.py文件),导入八个包实质便是演讲上面的__init__.py文件

2.random模块

天文 24天文 25

 1 import random
 2 print(random.random())#随机浮点值0-1之间
 3 
 4 print(random.randint(1,3))#随机1-3之间的整数,3能取到
 5 #random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。
 6 # 其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
 7 
 8 print(random.randrange(1,3))#随机1-3之间的整数,3不能取到,1能取到
 9 #random.randrange的函数原型为:random.randrange([start], stop[, step]),
10 # 从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),
11 # 结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。
12 # random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效。
13 
14 print(random.choice("hello"))#序列,字符串,列表,元组
15 # 其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。
16 # 这里要说明一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。
17 # list, tuple, 字符串都属于sequence。有关sequence可以查看python手册数据模型这一章。
18 
19 print(random.sample("hello",4))#第一个变量序列,字符串,列表,元组,第二个定义一个长度,随机取几位返回
20 #random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
21 list = [1, 2, 3, 4, 5, 6, 7, 8]
22 slice = random.sample(list, 5)  # 从list中随机获取5个元素,作为一个片断返回
23 print(slice)
24 print(list)  # 原有序列并没有改变
25 
26 print(random.uniform(1,3))#random不能指定区间,uniform可以指定
27 
28 l=[1,2,3,4,5,6]
29 random.shuffle(l)#洗牌功能
30 print(l)
31 print("------")
32 import random
33 # 随机整数:
34 print(random.randint(0, 99))  # 70
35 # 随机选取0到100间的偶数:
36 print(random.randrange(0, 101, 2))  # 4
37 # 随机浮点数:
38 print(random.random())  # 0.2746445568079129
39 print(random.uniform(1, 10))  # 9.887001463194844
40 # 随机字符:
41 print(random.choice('abcdefg&#%^*f'))  # f
42 # 多个字符中选取特定数量的字符:
43 print(random.sample('abcdefghij', 3))  # ['f', 'h', 'd']
44 # 随机选取字符串:
45 print(random.choice(['apple', 'pear', 'peach', 'orange', 'lemon']))  # apple
46 # 洗牌#
47 items = [1, 2, 3, 4, 5, 6, 7]
48 print(items)  # [1, 2, 3, 4, 5, 6, 7]
49 random.shuffle(items)
50 print(items)  # [1, 4, 7, 2, 5, 3, 6]
51 print("======")
52 #验证码
53 checkcode=""
54 for i in range(4):
55     #i=0
56     current=random.randrange(0,4)
57     #字母
58     if current==i:
59         tmp=chr(random.randint(65,90))
60     #数字
61     else:
62         tmp=random.randint(0,9)
63     checkcode+=str(tmp)
64 print(checkcode)

random

(2)导入方法

3.os模块

天文 26天文 27

 1 import os
 2 print(os.getcwd())#获取当前工作目录,即当前python脚本工作的目录路径
 3 # os.chdir("E:\\pycharm\\s14\\")
 4 os.chdir(r"E:\pycharm\s14")
 5 print(os.getcwd())# 改变当前脚本工作目录;相当于shell下cd
 6 print(os.curdir) # 返回当前目录: ('.')
 7 print(os.pardir) #获取当前目录的父目录字符串名:('..')
 8 #os.makedirs(r'E:\a\b\c\d')   # 可生成多层递归目录
 9 #os.removedirs(r'E:\a\b\c\d') #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推,清理空文件夹
10 #os.mkdir(r'E:\a\b') # 生成单级目录;相当于shell中mkdir dirname
11 #os.rmdir(r'E:\a\b') # 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
12 print(os.listdir(".")) #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印-->
13 # ['.idea', 'day1', 'day2', 'day3', 'day4', 'day5']
14 #os.remove() # 删除一个文件
15 #os.rename(r"E:\pycharm\s14\day5\y_test.py",r"E:\pycharm\s14\day5\p_test.py")  #重命名文件/目录
16 print(os.stat('day5'))  #获取文件/目录信息
17 print(os.sep)#输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
18 print(os.linesep)  # 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
19 #print(os.environ)#获取系统环境变量
20 print(os.pathsep) #输出用于分割文件路径的字符串 windows中';'
21 print(os.name)  #输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
22 #os.system("dir")  #运行shell命令,直接显示
23 #os.system("ipconfig /all")
24 print(os.path.abspath(r"E:\pycharm\day5\os_moduel\os.py"))  #返回规范化的绝对路径
25 print("=====")
26 print(os.path.split(r"E:\a\b\c\d.txt")) # 将path分割成目录和文件名二元组返回
27 print(os.path.dirname(r"E:\a\b\c\d.txt"))  #返回path的目录。其实就是os.path.split("path")的第一个元素
28 print(os.path.basename(r"E:\a\b\c\d.txt")) # 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。
29 # 即os.path.split("path")的第二个元素
30 #以上三中方法都可以在目录不存在的情况下进行
31 print(os.path.exists(r"E:\a")) # 如果path存在,返回True;如果path不存在,返回False
32 print(os.path.isabs(r"a\b")) # 如果path是绝对路径,返回True
33 print(os.path.isfile(r"E:\a\1.txt")) # 如果path是一个存在的文件,返回True。否则返回False,不存在文件False
34 print(os.path.isdir(r"E:\a")) # 如果path是一个存在的目录,则返回True。否则返回False,不存在目录False
35 print(os.path.join(r"C:",r"a",r"b",r"a.txt"))# 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
36 print(os.path.getatime(r"E:\a\1.txt")) # 返回path所指向的文件或者目录的最后存取时间 ,文件必须存在
37 print(os.path.getmtime(r"E:\a\1.txt") ) #返回path所指向的文件或者目录的最后修改时间

os_

 更多https://docs.python.org/2/library/os.html?highlight=os#module-os

import module_name

 4.sys模块

天文 28

天文 29天文 30

1 import sys
2 print(sys.argv)        # 命令行参数List,,在终端运行后加参数,第一个元素是程序本身路径
3 #print(sys.exit())      #退出程序,正常退出时exit(0)
4 print(sys.version)       #获取Python解释程序的版本信息
5 print(sys.maxsize)
6 print(sys.path)          #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
7 print(sys.platform)      #返回操作系统平台名称
8 print(sys.stdout.write('please:'))
9 val = sys.stdin.readline()[:-1]

sys_

import module_name,module2_name

 5.shutil模块

http://www.cnblogs.com/wupeiqi/articles/4963027.html

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

shutil.copyfileobj(fsrc, fdst[, length])
将文件内容拷贝到另三个文件中,能够部分内容

shutil.copyfile(src, dst)
拷贝文件

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

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

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

shutil.copy2(src, dst)
拷贝文件和情景音讯

shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件

例如:copytree(source, destination, ignore=ignore_patterns(‘*.pyc’,
‘tmp*’))

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

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

shutil.make_archive(base_name, format,…)

创办压缩包并回到文件路径,例如:zip、tar

  • base_name:
    压缩包的文件名,也足以是压缩包的路线。只是文件名时,则保留至当前目录,不然保存至钦点路线,
    如:www                        =>保存至最近路线
    如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
  • format: 压缩包体系,“zip”, “tar”, “bztar”,“gztar”
  • root_dir: 要削减的文书夹路径(默许当前目录)
  • owner: 用户,私下认可当前用户
  • group: 组,暗中同意当前组
  • logger: 用于记录日志,平常是logging.Logger对象

shutil 对压缩包的拍卖是调用 zipfile 和 tarfile 七个模块来拓展的,详细:

天文 31天文 32

 1 import zipfile
 2 
 3 # 压缩
 4 z = zipfile.ZipFile('laxi.zip', 'w')
 5 z.write('a.log')
 6 z.write('data.data')
 7 z.close()
 8 
 9 # 解压
10 z = zipfile.ZipFile('laxi.zip', 'r')
11 z.extractall()
12 z.close()

zipfile

天文 33天文 34

 1 import tarfile
 2 
 3 # 压缩
 4 tar = tarfile.open('your.tar','w')
 5 tar.add('/Users/wupeiqi/PycharmProjects/bbs2.zip', arcname='bbs2.zip')
 6 tar.add('/Users/wupeiqi/PycharmProjects/cmdb.zip', arcname='cmdb.zip')
 7 tar.close()
 8 
 9 # 解压
10 tar = tarfile.open('your.tar','r')
11 tar.extractall()  # 可设置解压地址
12 tar.close()

tarfile

天文 35天文 36

 1 import shutil
 2 # f1=open("本节笔记",encoding="utf-8")
 3 # f2=open("笔记2","w",encoding="utf-8")
 4 # shutil.copyfileobj(f1,f2)
 5 
 6 #shutil.copyfile("笔记2","笔记3")
 7 
 8 #shutil.make_archive("shutil_archive_test","zip","E:\pycharm\s14\day5")
 9 
10 import zipfile
11 z = zipfile.ZipFile("day5.zip","w")
12 z.write("p_test.py")
13 print("---")
14 z.write("笔记2")
15 z.close()

shutil_

from module_test import logger as log#部分导入,还可以加上一个别名

from module_test import n1,n2,n3

 6.shelve模块

shelve模块是2个大概的key-value将内部存款和储蓄器数据通过文件持久化的模块,能够持久化任何pickle可支撑的python数据格式。天文 37

天文 38天文 39

 1 import shelve,datetime
 2 
 3 d = shelve.open('shelve_test')  # 打开一个文件
 4 
 5 # info={"age":22,"salary":"50w"}
 6 #
 7 # name = ["alex", "rain", "test"]
 8 # d["test"] = name  # 持久化列表
 9 # d["name"] = name  # 持久dict
10 # d["info"] =info
11 # d["date"]=datetime.datetime.now()
12 # d.close()
13 
14 print(d.get("name"))
15 print(d.get("info"))
16 print(d.get("date"))

shelve_

from module_test import *

 7.xml模块

xml是促成分歧语言或程序之间展开数据交换的商业事务,跟json大概,但json使用起来更简单,然则,清代,在json还没出生的暗红时期,

大家只可以选拔用xml呀,至今很多价值观卖家如金融行业的洋洋类其他接口还重视是xml。

xml的格式如下,便是通过<>节点来分裂数据结构的:

天文 40天文 41

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <data>
 3     <country name="Liechtenstein">
 4         <rank updated="yes">2</rank>
 5         <year updated_by="alex">2009</year>
 6         <gdppc>141100</gdppc>
 7         <neighbor direction="E" name="Austria" />
 8         <neighbor direction="W" name="Switzerland" />
 9     </country>
10     <country name="Singapore">
11         <rank updated="yes">5</rank>
12         <year updated_by="alex">2012</year>
13         <gdppc>59900</gdppc>
14         <neighbor direction="N" name="Malaysia" />
15     </country>
16     <country name="Panama">
17         <rank updated="yes">69</rank>
18         <year updated_by="alex">2012</year>
19         <gdppc>13600</gdppc>
20         <neighbor direction="W" name="Costa Rica" />
21         <neighbor direction="E" name="Colombia" />
22         <info>
23             <population>8</population>
24             <size>960</size>
25         </info>
26     </country>
27 </data>

格式

xml协议在相继语言里的都 是永葆的,在python中能够用以下模块操作xml

天文 42天文 43

 1 import xml.etree.ElementTree as ET
 2 
 3 tree = ET.parse("xmltest.xml") #写上要处理的文件名
 4 root = tree.getroot()
 5 print(root)
 6 print(root.tag) #标签名
 7 
 8 # 遍历xml文档
 9 for child in root:
10     print(child.tag, child.attrib) #子标签,attrib属性
11     for i in child:
12         print(i.tag, i.text)
13         for j in i:
14             print(j.tag,j.text)
15 
16 # # 只遍历year 节点
17 # for node in root.iter('year'):
18 #     print(node.tag, node.text)

xml_handle

修改和删除xml文档内容

天文 44天文 45

 1 import xml.etree.ElementTree as ET
 2 
 3 tree = ET.parse("xmltest.xml")
 4 root = tree.getroot()
 5 
 6 # # 修改
 7 # for node in root.iter('year'):
 8 #     new_year = int(node.text) + 1  #把年+1
 9 #     node.text = str(new_year)
10 #     node.set("updated_by", "alex") #加属性
11 #
12 # tree.write("xmltest.xml")
13 
14 # 删除node
15 for country in root.findall('country'):
16     rank = int(country.find('rank').text)
17     if rank > 50:
18         root.remove(country)
19 
20 tree.write('output.xml')

xml_modify

本人创制xml文书档案

天文 46天文 47

 1 import xml.etree.ElementTree as ET
 2 
 3 new_xml = ET.Element("personinfolist") #根节点
 4 personinfo = ET.SubElement(new_xml, "personinfo", attrib={"enrolled": "yes"}) #new_xml的子节点
 5 name = ET.SubElement(personinfo, "name")
 6 name.text="alex"
 7 age = ET.SubElement(personinfo, "age", attrib={"checked": "no"})#personinfo的子节点
 8 sex = ET.SubElement(personinfo, "sex")
 9 age.text = '33'#赋值
10 personinfo2 = ET.SubElement(new_xml, "personinfo", attrib={"enrolled": "no"})
11 name = ET.SubElement(personinfo2, "name")
12 name.text="jyh"
13 age = ET.SubElement(personinfo2, "age")
14 age.text = '19'
15 
16 et = ET.ElementTree(new_xml)  # 生成文档对象
17 et.write("test.xml", encoding="utf-8", xml_declaration=True) #xml_declaration=True,声明xml格式
18 
19 ET.dump(new_xml)  # 打印生成的格式

xml_create

# 不建议这么做,实质上是把所有的代码都粘贴过来

 8.PyYAML模块

 Python也足以很不难的处理ymal文书档案格式,只但是供给安装二个模块,参考文书档案:http://pyyaml.org/wiki/PyYAMLDocumentation ,能够做布置文件

(3)import本质(路径搜索和摸索路径)

9.ConfigParser模块

用以转移和改动常见配置文书档案,当前模块的称呼在 python 3.x 版本中变更为
configparser。

来看四个浩大软件的广大文书档案格式如下(与MySQL格式一样)

天文 48天文 49

 1 [DEFAULT]
 2 ServerAliveInterval = 45
 3 Compression = yes
 4 CompressionLevel = 9
 5 ForwardX11 = yes
 6 
 7 [bitbucket.org]
 8 User = hg
 9 
10 [topsecret.server.com]
11 Port = 50022
12 ForwardX11 = no

conf

只要想用python生成二个如此的文书档案如何做吗?

天文 50天文 51

 1 import configparser #ConfigParser in python 2.x
 2 
 3 config = configparser.ConfigParser()
 4 config["DEFAULT"] = {'ServerAliveInterval': '45',
 5                      'Compression': 'yes',
 6                      'CompressionLevel': '9'}
 7 
 8 config['bitbucket.org'] = {}
 9 config['bitbucket.org']['User'] = 'hg'
10 
11 config['topsecret.server.com'] = {}
12 config['topsecret.server.com']['Host Port'] = '50022'  # mutates the parser
13 config['topsecret.server.com']['ForwardX11'] = 'no'  # same here
14 
15 config['DEFAULT']['ForwardX11'] = 'yes'
16 
17 with open('example.ini', 'w') as configfile:
18     config.write(configfile)

conf_create

写完了还是能再读出来哈。

天文 52天文 53

 1 >>> import configparser
 2 >>> config = configparser.ConfigParser()
 3 >>> config.sections()
 4 []
 5 >>> config.read('example.ini')
 6 ['example.ini']
 7 >>> config.sections()
 8 ['bitbucket.org', 'topsecret.server.com']
 9 >>> 'bitbucket.org' in config
10 True
11 >>> 'bytebong.com' in config
12 False
13 >>> config['bitbucket.org']['User']
14 'hg'
15 >>> config['DEFAULT']['Compression']
16 'yes'
17 >>> topsecret = config['topsecret.server.com']
18 >>> topsecret['ForwardX11']
19 'no'
20 >>> topsecret['Port']
21 '50022'
22 >>> for key in config['bitbucket.org']: print(key)
23 ...
24 user
25 compressionlevel
26 serveraliveinterval
27 compression
28 forwardx11
29 >>> config['bitbucket.org']['ForwardX11']
30 'yes'

conf_read

configparser增加和删除改查语法

天文 54天文 55

 1 [section1]
 2 k1 = v1
 3 k2:v2
 4   
 5 [section2]
 6 k1 = v1
 7  
 8 import ConfigParser
 9   
10 config = ConfigParser.ConfigParser()
11 config.read('i.cfg')
12   
13 # ########## 读 ##########
14 #secs = config.sections()
15 #print secs
16 #options = config.options('group2')
17 #print options
18   
19 #item_list = config.items('group2')
20 #print item_list
21   
22 #val = config.get('group1','key')
23 #val = config.getint('group1','key')
24   
25 # ########## 改写 ##########
26 #sec = config.remove_section('group1')
27 #config.write(open('i.cfg', "w"))
28   
29 #sec = config.has_section('wupeiqi')
30 #sec = config.add_section('wupeiqi')
31 #config.write(open('i.cfg', "w"))
32   
33   
34 #config.set('group2','k1',11111)
35 #config.write(open('i.cfg', "w"))
36   
37 #config.remove_option('group2','age')
38 #config.write(open('i.cfg', "w"))

conf_handle

导入模块的真相是把Python文件说贝拉米(Beingmate)遍

10.hashlib模块

用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224,
SHA256, SHA384, SHA512 ,MD5 算法(都以依照hash的,SHA比MD5更安全)

天文 56天文 57

 1 import hashlib
 2 m=hashlib.md5()
 3 m.update(b"Hello")
 4 print(m.hexdigest()) #16进制的格式
 5 m.update("It's me天王盖地虎".encode(encoding="utf-8"))  #实际上是“HelloIt's me天王盖地虎”
 6 print(m.hexdigest())
 7 #m.update(b"It's been a long time since we spoken...")
 8 #print(m.hexdigest())
 9 
10 m2=hashlib.md5()
11 m2.update(b"HelloIt's me")
12 print(m.hexdigest())
13 
14 s2=hashlib.sha1()
15 s2.update(b"HelloIt's me")
16 print(s2.hexdigest())
17 print("====")
18 import hmac
19 h=hmac.new(b"12345","you are 250你是".encode(encoding="utf-8"))#在3.0里,encode一下就是bytes了
20 print(h.hexdigest())

hashlib_handle

天文 58天文 59

 1 import hashlib
 2  
 3 m = hashlib.md5()
 4 m.update(b"Hello")
 5 m.update(b"It's me")
 6 print(m.digest())
 7 m.update(b"It's been a long time since last time we ...")
 8  
 9 print(m.digest()) #2进制格式hash
10 print(len(m.hexdigest())) #16进制格式hash
11 '''
12 def digest(self, *args, **kwargs): # real signature unknown
13     """ Return the digest value as a string of binary data. """
14     pass
15  
16 def hexdigest(self, *args, **kwargs): # real signature unknown
17     """ Return the digest value as a string of hexadecimal digits. """
18     pass
19  
20 '''
21 import hashlib
22  
23 # ######## md5 ########
24  
25 hash = hashlib.md5()
26 hash.update('admin')
27 print(hash.hexdigest())
28  
29 # ######## sha1 ########
30  
31 hash = hashlib.sha1()
32 hash.update('admin')
33 print(hash.hexdigest())
34  
35 # ######## sha256 ########
36  
37 hash = hashlib.sha256()
38 hash.update('admin')
39 print(hash.hexdigest())
40  
41  
42 # ######## sha384 ########
43  
44 hash = hashlib.sha384()
45 hash.update('admin')
46 print(hash.hexdigest())
47  
48 # ######## sha512 ########
49  
50 hash = hashlib.sha512()
51 hash.update('admin')
52 print(hash.hexdigest())

View Code

还不够吊?python 还有2个 hmac 模块,它个中对我们创设 key 和 内容
再展开始拍摄卖然后再加密

散列音信鉴定分别码,简称HMAC,是一种基于音信鉴定分别码MAC(Message
Authentication
Code)的辨别机制。使用HMAC时,消息报纸发表的双边,通过验证音讯中进入的识别密钥K来鉴定识别新闻的真伪;

貌似用于互连网通讯中消息加密,前提是二者先要约定好key,就好像接头暗号一样,然后音讯发送把用key把新闻加密,接收方用key
+ 消息公开再加密,拿加密后的值 跟 发送者的相相比是不是等于,

那般就能表明新闻的实事求是,及发送者的合法性了。

天文 60天文 61

1 import hmac
2 h = hmac.new(b'天王盖地虎', b'宝塔镇河妖')
3 print h.hexdigest()

View Code

更加多关于md5,sha1,sha256等介绍的篇章看那里https://www.tbs-certificates.co.uk/FAQ/en/sha256.html 

(4)导入优化

11.正则表达式

采用简易,难在匹配格式。爬虫供给领会。

天文 62又再次回到就同盟到了,没影响就从未匹配到

天文 63前方是格式,后面是字符串(套路)

常用正则表明式符号

天文 64天文 65

 1 '.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
 2 '^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
 3 '$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以
 4 '*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']
 5 '+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']
 6 '?'     匹配前一个字符1次或0次
 7 '{m}'   匹配前一个字符m次
 8 '{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']
 9 '|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
10 '(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c
11  
12  
13 '\A'    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
14 '\Z'    匹配字符结尾,同$
15 '\d'    匹配数字0-9
16 '\D'    匹配非数字
17 '\w'    匹配[A-Za-z0-9]
18 '\W'    匹配非[A-Za-z0-9]
19 's'     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'
20  
21 '(?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'}

re

天文 66match套路从上马搜索,search套路从一切文件中检索

天文 67天文 68天文 69五个门道相当到第①个就回去

天文 70

天文 71天文 72天文 73

天文 74findall套路天文 75

天文 76天文 77

天文 78

========================================

天文 79天文 80

========================================

split套路

天文 81

sub套路

天文 82

最常用的合营语法:

1.re.match 从头开始匹配

2.re.search 匹配包含

3.re.findall 把所有匹配到的字符放到以列表中的元素返回

4.re.splitall 以匹配到的字符当做列表分隔符

5.re.sub      匹配字符并替换

反斜杠的麻烦

  与超越58%编制程序语言同样,正则表达式里采用”\”作为转义字符,那就或者导致反斜杠烦扰。若是你需求合营文本中的字符”\”,

那么使用编制程序语言表示的正则表明式里将急需5个反斜杠”\\\\”:前七个和后三个分级用于在编制程序语言里转义成反斜杠,

转换来四个反斜杠后再在正则表明式里转义成四个反斜杠。Python里的原生字符串很好地消除了那么些题材,那几个事例中的正则表明式可以使用r”\\”表示。

相同,匹配1个数字的”\\d”能够写成r”\d”。有了原生字符串,你再也不用担心是还是不是漏写了反斜杠,写出来的表明式也更直观。

 

仅需轻轻知道的多少个卓殊形式

1.re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)

2.M(MULTILINE): 多行模式,改变``'^'``和``'$'``的行为

3.S(DOTALL): 点任意匹配模式,改变``'.'``的行为

 

天文 83天文 84

from module_test import logger as log#一些导入,还足以添加三个外号

 

(5)模块分类

本节学业

支出一个简易的python总结器

  1. 达成加减乘除及拓号优先级解析
  2. 用户输入 1 – 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998
    +10 * 568/14 )) – (-4*3)/ (16-3*2) )等相近公式后,
  3. 非得协调分析个中的(),+,-,*,/符号和公式(不能够调用eval等相近成效偷懒实现),运算后得出结果,结果必须与真实的总计器所搜查捕获的结果一致

思路:

1.先用正则表明式匹配到最里层的括号所回顾的不带括号的表达式

2.再把数据量变小(判断个中是或不是有括号,把加减运算和总括运算单独放到两个函数里去做)

 

hint:

re.search(r’\([^()]+\)’,s).group()

‘(-40/5)’

 

import time

def logger(name):
    now_time=time.strftime("%Y-%m-%d %H:%M:%S")
    print(now_time,"   %s is writing the log......"%name)
    return "well done"

info="hello world"

# import module_test #实质:将module_test中的代码解释了一遍
#
# #使用被导入的模块中的方法与变量,前面要跟上模块的名称
# module_test.logger("Jean_v")
# print(module_test.info)


from module_test import logger as log#实质:将module_test中的logger函数部分的代码粘贴在这
# from module_test import * # 不建议这么做,实质上是把所有的代码都粘贴过来
'''
def logger(name):
    now_time=time.strftime("%Y-%m-%d %H:%M:%S")
    print(now_time,"   %s is writing the log......"%name)
    return "well done"
'''
log("Jean_V")

import pack # 导入一个包实质就是解释下面的__init__.py文件

#????如何导入pack包下的pack_test文件
from pack import pack_test
pack_test.func()

# ??? 如何导入day5-atm/atm/bin中的atm.py文件
import os,sys

print(sys.path)#打印当前文件搜索的范围
print(os.path.abspath(__file__))#当前文件的所在的绝对路径
path_x=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
pathlist=['day5-atm','atm','bin']
#路径的拼接
pa=os.path.join(path_x,'day5-atm\\atm\\bin')
print(pa)

sys.path.append(pa)
import atm

3.时间time和datetime模块

参报考博士学士客:http://egon09.blog.51cto.com/9161406/1840425

python中代表时间的点子:(1)时间戳,(2)格式化的光阴字符串(3)元组struct_time共7个因素

UTC(Coordinated Universal
Time世界和谐时),也称格林威治天文时间,世界标准时间,在中HUAWEIUTC+8

DST(Daylight Saving Time)夏令时

岁月戳timestamp:表示从一九七〇年7月十七日00:00:00开端按秒总括,重临float类型,函数有time(),clock()函数

元组(struct_time)方式:struct_time元组共有7个成分,重临struct_time的函数首要有gmtime(),localtime(),strptime()

格式化参照:

%``a    本地(locale)简化星期名称

%``A    本地完整星期名称

%``b    本地简化月份名称

%``B    本地完整月份名称

%``c    本地相应的日期和时间表示

%``d    一个月中的第几天(``01 - 31``)

%``H    一天中的第几个小时(``24``小时制,``00 - 23``)

%``I    第几个小时(``12``小时制,``01 - 12``)

%``j    一年中的第几天(``001 - 366``)

%``m    月份(``01 - 12``)

%``M    分钟数(``00 - 59``)

%``p    本地am或者pm的相应符

%``S    秒(``01 - 61``)

%``U    一年中的星期数。(``00 -
53``星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第``0``周。

%``w    一个星期中的第几天(``0 - 6``,``0``是星期天)

%``W    和``%``U基本相同,不同的是``%``W以星期一为一个星期的开始。

%``x    本地相应日期

%``X    本地相应时间

%``y    去掉世纪的年份(``00 - 99``)

%``Y    完整的年份

%``Z    时区的名字(如果不存在为空字符)

%``% ‘``%``’字符

时间关系的转换:

天文 85

天文 86

4.随机数模块 Random

参报考博士硕士客:http://egon09.blog.51cto.com/9161406/1840425

天文 87

天文 88

import random
checkcode=''
tmp=''
#生成一个随机的验证码
for i in range(4):
    upperCase=chr(random.randint(65,90))
    lowerCase=chr(random.randint(97,122))
    digit=random.randint(0,9)
    tmp=random.choice([upperCase,lowerCase,digit])
    checkcode+=str(tmp)
print(checkcode)

5.python中的os与sys模块

提供对操作系统进行调用的接口

参报考博士博士客:http://egon09.blog.51cto.com/9161406/1840425

参报考博士大学生客:http://www.cnblogs.com/alex3714/articles/5161349.html

天文 89

天文 90

天文 91

天文 92

天文 93

天文 94天文 95

  1 import os
  2 import sys
  3 
  4 print(sys.argv)
  5 print(os.name)#打印操作系统的名字
  6 print(os.environ)#打印系统的系统的环境变量

View Code

6.shutil模块

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

shutil.copyfileobj(fsrc, fdst[, length])
将文件内容拷贝到另1个文件中,能够部分故事情节

参报考博士学士客:http://www.cnblogs.com/wupeiqi/articles/4963027.html

天文 96天文 97

import shutil


# 将文件file1复制到file2,file2事先不需要存在,会自动创建
# shutil.copyfile("file1",'file2')
"""Copy data from src to dst."""

# f1=open("file1","r",encoding="utf-8")
# f2=open("file2","w",encoding="utf-8")
# shutil.copyfileobj(f1,f2)
"""copy data from file-like object fsrc to file-like object fdst"""

# shutil.copystat("file1","file2")#将f1文件属性复制到f2

# shutil.copytree("dir1","dir11")#将文件目录复制
# shutil.rmtree("dir11")#将dir2文件夹删除
# 创建压缩包并返回文件路径
# 将dir1文件夹中的内容压缩打包到桌面上,取名为dirfile.zip
shutil.make_archive(r"C:\Users\wujian\Desktop\dirfile","zip",r"B:\Python\PycharmCode\pyDay5\day5\dir1")

View Code

7.shelve 模块

shelve模块是三个简约的k,v将内部存款和储蓄器数据通过文件持久化的模块,能够持久化任何pickle可帮助的python数据格式

shelve是一额简约的多寡存款和储蓄方案,它唯有贰个函数正是open(),这么些函数接收叁个参数就是文本名,然后再次来到1个shelf对象,你能够用他来存款和储蓄东西,就能够简简单单的把他当作2个字典,当你存储落成的时候,就调用close函数来关闭

天文 98天文 99

import datetime
import shelve
# python中的一个键值存储的filedb,简单易用,类似于数据库
d=shelve.open('file.db')# 打开一个文件(或者创建一个文件db)
# info={'name':'Jean_V','age':22,'addr':'Shanghai'}
# namelist=['Jean','Anaery','Bod']
# d['info']=info
# d['namelist']=namelist
# d['time']=datetime.datetime.now()
# d.close()

# 将filedb中的数据读取出来
print(d.get("info"))
print(d.get('namelist'))
print(d.get('time'))

View Code

8.python解析xml

天文 100天文 101

<?xml version="1.0"?>
<data>
    <country name="Liechtenstein">
        <rank updated="yes">2</rank>
        <year>2008</year>
        <gdppc>141100</gdppc>
        <neighbor name="Austria" direction="E"/>
        <neighbor name="Switzerland" direction="W"/>
    </country>
    <country name="Singapore">
        <rank updated="yes">5</rank>
        <year>2011</year>
        <gdppc>59900</gdppc>
        <neighbor name="Malaysia" direction="N"/>
    </country>
    <country name="Panama">
        <rank updated="yes">69</rank>
        <year>2011</year>
        <gdppc>13600</gdppc>
        <neighbor name="Costa Rica" direction="W"/>
        <neighbor name="Colombia" direction="E"/>
    </country>
</data>

View Code

天文 102天文 103

import xml.etree.ElementTree as ET# 导入包

tree=ET.parse("xmltest.xml")
root=tree.getroot()
print(root.tag)

#遍历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)

# 修改和删除xml文档内容
for node in root.iter("year"):
    new_year=int(node.text)+1
    node.text=str(new_year)
    node.set("updated","yes")

tree.write("xmltest.xml")

#删除节点
for country in root.findall("country"):
    rank=int(country.find("rank").text)
    if rank>50:
        root.remove(country)
tree.write("xmltest.xml")

View Code

9.pyYAML模块

Python也得以很简单的处理ymal文档格式,只可是须求设置一个模块,参考文书档案:http://pyyaml.org/wiki/PyYAMLDocumentation

10.ConfigParser模块

用来转移和改动常见配置文书档案

大规模的软件文书档案格式如下:

天文 104天文 105

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes

[bitbucket.org]
User = hg

[topsecret.server.com]
Port = 50022
ForwardX11 = no

View Code

 

天文 106天文 107

import configparser
#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)

View Code

天文 108天文 109

import configparser
# configparser读取模块
conf=configparser.ConfigParser()
conf.read("example.ini")

print(conf.defaults())
print(conf.sections())

View Code

11.hashlib模块

hashlib用于加密操作,首要提供SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5
算法

天文 110天文 111

import hashlib

m=hashlib.md5()
m.update(b"Hello world")
m.update(b"It's me this is for test")
print(m.digest())#以二进制格式输出加密后的结果
print(m.hexdigest())#以十六进制格式输出加密后的结果

n=hashlib.sha256()
n.update("Hello world,this is from Alice to Bob,今天天气不错哦".encode("utf-8"))
print(n.digest())
print(n.hexdigest())

View Code

12re模块–正则表明式

常用正则表明式符号

天文 112天文 113

  1 '.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
  2 '^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
  3 '$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以
  4 '*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']
  5 '+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']
  6 '?'     匹配前一个字符1次或0次
  7 '{m}'   匹配前一个字符m次
  8 '{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']
  9 '|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
 10 '(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c
 11 
 12 
 13 '\A'    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
 14 '\Z'    匹配字符结尾,同$
 15 '\d'    匹配数字0-9
 16 '\D'    匹配非数字
 17 '\w'    匹配[A-Za-z0-9]
 18 '\W'    匹配非[A-Za-z0-9]
 19 's'     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'
 20 
 21 '(?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'}

View Code

最常用的合作语法

天文 114天文 115

  1 re.match 从头开始匹配
  2 re.search 匹配包含
  3 re.findall 把所有匹配到的字符放到以列表中的元素返回
  4 re.splitall 以匹配到的字符当做列表分隔符
  5 re.sub      匹配字符并替换

View Code

天文 116

假设须要合营文本中的“\”,很简单导致反斜杠干扰,提出接纳r”\\”表示。同样,匹配2个数字的”\\d”可以写成r”\d”。有了原生字符串,你再也不用担心是或不是漏写了反斜杠,写出来的表达式也更直观

天文 117天文 118

  1 re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)
  2 M(MULTILINE): 多行模式,改变'^'和'$'的行为(参见上图)
  3 S(DOTALL): 点任意匹配模式,改变'.'的行为

View Code


作业

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图