Python基础第14天

 

                                                                  常见模块(1)

一:time模块

import time
#--------------------------我们先以当前时间为准,让大家快速认识三种形式的时间
print(time.time()) # 时间戳:1487130156.419527
print(time.strftime("%Y-%m-%d %X")) #格式化的时间字符串:'2017-02-15 11:40:53'

print(time.localtime()) #本地时区的struct_time
print(time.gmtime())    #UTC时区的struct_time

                                                 

#---将结构化时间转换成时间戳
print(time.mktime(time.localtime()))

#--将结构化时间转换成字符串时间
print(time.strftime('%Y-%m-%d %X',time.localtime()))

#--将字符串时间转换成结构化时间
print(time.strptime('2016:12:24:17:50:36','%Y:%m:%d:%X'))

二:random模块

import random

ret=random.random()   #(0,1)----float
print(ret)

print(random.randint(1,3))   #[1,3]
print(random.randrange(1,3))  #[1,3)
print(random.choice([1,'23,[4,5]']))
print(random.sample([1,'23',[4,5]],2))
print(random.uniform(1,3))
item=[1,3,4,7,9]
random.shuffle(item)
print(item)

例子:随机验证码

#验证码
import random
def v_code():
    ret=''
    for i in range(5):
        num=random.randint(0,9)
        alf=chr(random.randint(65,122))
        s=str(random.choice([num,alf]))
        ret+=s
    return ret
print(v_code())

三:os模块   os模块是与操作系统交互的一个接口

import os
print(os.getcwd())  #获取当前工作目录,即当前python脚本工作的目录路径
os.chdir('test1')  #改变当前脚本工作目录;相当于shell下cd
print(os.getcwd())
print(os.chdir('..'))   #返回上一层
print(os.getcwd())
os.curdir
os.pardir
print(os.getcwd())
os.makedirs('test1/test2')
os.removedirs('test1/test2')
os.mkdir('test11')
os.rmdir('test11') # 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
print(os.listdir('test1'))
os.remove('XXX')
os.rename('test1','test2')
print(os.stat('test2'))
print(os.sep )   # 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
print(os.linesep) #输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
print(os.pathsep)  #输出用于分割文件路径的字符串 win下为;,Linux下为:(环境变量)
print(os.name)    #输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
print(os.system('dir'))
print(os.environ)
print(os.path.split('test2'))   #将path分割成目录和文件名二元组返回
print(os.path.dirname('test2'))  #返回path的目录
print(os.path.basename('test2'))  # 返回path最后的文件名
print(os.path.dirname('rE:\python\python3\python_x\day22\test2'))
os.path.exists(path)  #如果path存在,返回True;如果path不存在,返回False
a='E:\python\python3\python_x'
b='day22\test2'
print(os.path.join(a,b))   #路径拼接
os基本方法
print(os.stat('test2'))  

 

四:sys模块

1 sys.argv           命令行参数List,第一个元素是程序本身路径
2 sys.exit(n)        退出程序,正常退出时exit(0)
3 sys.version        获取Python解释程序的版本信息
4 sys.maxint         最大的Int值
5 sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
6 sys.platform       返回操作系统平台名称
进度条例子:
#进度条
import sys,time
for i in range(10):
    sys.stdout.write('#')  #在屏幕显示相应内容
    sys.stdout.flush()
    time.sleep(0.1)

五:json模块 --- 重要

首先,和eval区别。eval:通常用来执行一个字符串表达式,并返回表达式的值。可以把list  tuple  dict  string相互转换,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了。

其次,注意点。json 不认单引号,一律识别为双引号

import json
dic={'name':'alex'}  #{“name”:“alex”}
# i=7                  #  '7'
# s='hello'              #'“hello”'
# l=[11,22]              #"[11,22]"
data=json.dumps(dic)
# i=json.dumps(i)
# print(i)
print(data)  #{“name”:“alex”}
print(type(data))  #<class 'str'>

采用json.dumps   json.loads  方法写入数据并读取数据

import json
dic={"name":"alex"}
dic_str=json.dumps(dic)
f=open('new_hello','w')
f.write(dic_str)

f_read=open('new_hello','r')
data=json.loads(f_read.read())
print(data)
print(type(data))

两个加不加s的区别:

import json
dic={"name":"alex"}
f=open('new_hello','w')
# # json.dump(dic,f)
data=json.dumps(dic)
f.write(dic)

f_read=open('new_hello','r')
data=json.loads(f_read.read())
# data=json.load(f_read)

只要符合json规范(双引号),就可以拿处理。json.dumps的功能就是讲其类型转换成json规范处理,所以:

#json_test
{"name":"alevx"}

#json&pickle.py
import json
with open("json_test","r")as f:
    data=f.read()
    data=json.loads(data)
    print(data['name'])  #alevx

六:pickle模块

Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系

import pickle
dic = {'name':'alex','age':23,'sex':'male'}
print(type(dic))
j = pickle.dumps(dic)
print(type(j))  #<class 'bytes'>

f=open('序列化对象_pickle','wb')
f.write(j)  #等价于pickle.dump(dic,f)

import pickle
f=open('序列化对象_pickle','rb')
data=pickle.loads(f.read()) #等价于data=pickle.load(f)
print(data['age'])

七:xml模块

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。

标签语言分为:自闭合标签、非自闭合标签

对于标签的遍历     for i n root:

                               print(i.tag)  对象遍历

                               print(i.attrib) 属性遍历

                               print(i.text)文本遍历

xml的格式如下,就是通过<>节点来区别数据结构的,遍历xml文档,对文档的增删改查

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

import xml.etree.ElementTree as ET
 
tree = ET.parse("xmltest.xml")
root = tree.getroot()
 
#修改
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")
 
 
#删除node
for country in root.findall('country'):
   rank = int(country.find('rank').text)
   if rank > 50:
     root.remove(country)
 
tree.write('output.xml')
View Code
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)
#---------------------------------------

import xml.etree.ElementTree as ET
 
tree = ET.parse("xmltest.xml")
root = tree.getroot()
 
#修改
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")
 
 
#删除node
for country in root.findall('country'):
   rank = int(country.find('rank').text)
   if rank > 50:
     root.remove(country)
 
tree.write('output.xml')
自己创建

 

posted @ 2017-03-05 22:20  清风徐来xyd  阅读(273)  评论(2编辑  收藏  举报