python模块学习(一)

2018-05-18 python宝典

点击上方"python宝典",关注获取python全套视频,

技术文章第一时间送达!


模块,用一砣代码实现了某个功能的代码集合。 

类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。


time & datetime模块

importtime
print(time.process_time())#0.0468003测量处理器运算时间,不包括sleep时间,不稳定,mac上测不出来
print(time.asctime())#返回时间格式"Thu May 17 10:35:06 2018",
print(time.localtime())#返回本地时间 的struct time对象格式
print(time.asctime(time.localtime()))#返回时间格式"Fri Aug 19 11:14:16 2016",
print(time.ctime())#返回Thu May 17 10:35:06 2018 格式, 同上
# 日期字符串 转成  时间戳
string_2_struct = time.strptime("2016/05/22","%Y/%m/%d")#将 日期字符串 转成 struct时间对象格式
print(string_2_struct)
struct_2_stamp = time.mktime(string_2_struct)#将struct时间对象转成时间戳
print(struct_2_stamp)
#将时间戳转为字符串格式
print(time.gmtime(time.time()-86640))#将utc时间戳转换成struct_time格式
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) )#将utc struct_time格式转成指定的字符串格式

importdatetime
print(datetime.datetime.now())#返回 2018-05-17 12:47:03.941925
print(datetime.date.fromtimestamp(time.time()) )  # 时间戳直接转成日期格式 2016-08-19
print(datetime.datetime.now() )
print(datetime.datetime.now() + datetime.timedelta(3))#当前时间+3天
print(datetime.datetime.now() + datetime.timedelta(-3))#当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3))#当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30))#当前时间+30分
c_time  = datetime.datetime.now()
print(c_time.replace(minute=3,hour=2))#时间替换


random模块

随机数

importrandom
print(random.random())
print(random.randint(1,10))#包括10
print(random.choice('asdfg'))
print(random.sample([1,2,3,4,5,6],2))#随机选两个值
print(random.randrange(1,3))#不包括3
生成随机验证码
importrandom
checkcode =''
foriinrange(4):
   current = random.randrange(0,4)
   ifcurrent != i:
       temp = chr(random.randint(65,90))
   else:
       temp = random.randint(0,9)
   checkcode += str(temp)
print(checkcode)


OS模块 

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

import os
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: ('.')
os.pardir  获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")  运行shell命令,直接显示
os.environ  获取系统环境变量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间


sys模块

跟python解释器交互的模块

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]


json & pickle 模块

用于序列化的两个模块

json,用于字符串 和 python数据类型间进行转换

pickle,用于python特有的类型 和 python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

importjson
# dumps,loads,
# dump(包含了写操作),load(包含了读操作)
dict = {
   'name':'zhangqiye',
   'age':'22',
   'sex':'男'
}
s = json.dumps(dict)

withopen('json_test','w+')asf:
   f.write(s)#可改成json.dump(dict,f)
withopen('json_test','r')asf:
    s = f.read()
    print(json.loads(s))#这两行可换为json.load(f)

# json转化不了函数对象类型

importpickle
deffoo():
   print('ok')
withopen('pickle_test','wb')asf:
   f.write(pickle.dumps(foo))
withopen('pickle_test','rb')asf:
   data=pickle.loads(f.read())
   data()

 

xml处理模块

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

xml的格式如下,就是通过<>节点来区别数据结构的:

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


xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml 

import xml.etree.ElementTreeasET

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

#遍历xml文档
forchild in root:
   print(child.tag, child.attrib)
   fori in child:
       print(i.tag,i.text)

#只遍历year 节点
fornode in root.iter('year'):
   print(node.tag,node.text)

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

#修改
fornode in root.iter('year'):
   new_year =int(node.text) +1
   node.text = str(new_year)
   node.set("updated","yes")

tree.write("xmltest.xml")

#删除node
forcountry in root.findall('country'):
  rank =int(country.find('rank').text)
 ifrank >50:
    root.remove(country)

tree.write('output.xml')


自己创建xml文档

importxml.etree.ElementTreeasET
new_xml = ET.Element("namelist")
name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
age = ET.SubElement(name,"age",attrib={"checked":"no"})
sex = ET.SubElement(name,"sex")
sex.text ='33'
name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
age = ET.SubElement(name2,"age")
age.text ='19'

et = ET.ElementTree(new_xml)#生成文档对象
et.write("test.xml", encoding="utf-8",xml_declaration=True)

ET.dump(new_xml)#打印生成的格式




识别图中二维码,欢迎关注python宝典

本站所有内容仅供本人订阅使用!RSS + Sitemap