Python学习week5

模块:用来从逻辑上组织代码,本质是.py结尾的Python文件。

Python Package(包): 用来从逻辑上组织模块,本质是文件夹,必须带有__init__.py文件。

导入模块:

1、import module_name1,module_name2......   导入模块文件,调用时用module_name.variable_name。

2、from module_name import *    导入模块文件内的所有代码,调用时直接用模块内的变量名称。如果当前文件内有变量和模块文件内的变量同名的话,就近执行,哪个最近解释的就执行哪个。

3、from module import func as func_module   使用as关键字区分当前文件内的变量和模块文件内的变量。

4、from module import func as func_module1,func2 as func_module2

推荐1、3、4方法。

import module_name本质:把模块文件运行一遍,然后把模块文件内容赋值给模块文件名。调用格式:module_name.variable_name

from module import func本质:解释模块中的func。调用格式:variable_name

导入包:import package_name

当前文件与package文件同级。

导入包的本质:运行package目录下的__init__.py文件。


 模块分类:

1、标准库,Python自带

2、开源模块,第三方模块

3、自定义模块


time模块:

时间戳:从1970年1月1日零时起至今的秒数;

格式化时间:字符串表示时间,可以自定义格式;

%Y:年

%m:月

%d:日

%A:星期几

%H:时

%M:分

%S:秒

struct_time:元组方式表示时间,有9个元素

不同时间表示方法之间的转化:

 time.time()

 返回时间戳模式的时间:

1538570674.6409438

time.localtime()

 返回元组形式的本地时间:

time.struct_time(tm_year=2018, tm_mon=10, tm_mday=3, tm_hour=20, tm_min=45, tm_sec=45, tm_wday=2, tm_yday=276, tm_isdst=0)

time.gmtime()

 返回元组形式的标准时间:

time.struct_time(tm_year=2018, tm_mon=10, tm_mday=3, tm_hour=12, tm_min=45, tm_sec=55, tm_wday=2, tm_yday=276, tm_isdst=0)

random模块:

import random
print(random.random())      #随机产生0-1之间的浮点数
print(random.uniform(5,10))     #随机产生5-10之间的浮点数
print(random.randrange(0,101,5))        #随机产生0-101且步长为5的整数
print(random.choice(range(0,101,5)))    #随机产生0-101且步长为5的整数
print(random.randint(0,10))     #随机产生0-10的整数,包括10
print(random.choice('abcdefg123456789'))    #从序列中随机选择一个元素
print(random.sample([1,2,3,4,5,6],2))       #从样本中随机选择2个元素,输出为list
items=[1,2,3,4,5,6]
random.shuffle(items)       #打乱items的排列顺序,改变items。
print(items)

其中,random.choice()和random.sample()参数均是序列。序列可以是list,tuple,string,不可以是字典。


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模块:

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

 json和pickle模块:

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

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

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


shelve模块:

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

import shelve
d = shelve.open('shelve_test')  # 打开一个文件
name = ["alex", "rain", "test"]
d["test"] = name  # 持久化列表
d.close()

读取数据:

import shelve
d=shelve.open("shelve_test")
print(d.get('test'))
输出:
['alex', 'rain', 'test']

 


XML模块:

现有xml文件内容如下:

<?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>

 从此文件中获取信息:

import xml.etree.ElementTree as ET
tree = ET.parse("xmltest.xml")        #xmltest.xml是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,i.attrib)
# 只遍历year 节点
for node in root.iter('year'):
    print(node.tag, node.text)    

修改xml文件:

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

 创建xml文件:

import xml.etree.ElementTree as ET
new_xml = ET.Element("people")
person1 = ET.SubElement(new_xml, "person1", attrib={"enrolled": "yes"})
person1.text="刚田武"
age = ET.SubElement(person1, "age", attrib={"checked": "no"})
age.text = '23'
sex = ET.SubElement(person1, "sex")
sex.text="男"
person2 = ET.SubElement(new_xml, "person2", attrib={"enrolled": "no"})
person2.text="猪刚鬣"
age = ET.SubElement(person2, "age")
age.text = '22'
sex = ET.SubElement(person2, "sex")
sex.text="男"

et = ET.ElementTree(new_xml)  # 生成文档对象
et.write("朱二娃和基佬强.xml", encoding="utf-8", xml_declaration=True)

 生成的xml文件不会自动换行。

猜你喜欢

转载自www.cnblogs.com/zhhy236400/p/9735972.html