Python基础-模块

Python常用模块详解
本文介绍了Python中的多个常用模块,包括导入文件的方法、时间模块、随机数生成、操作系统交互、系统参数获取、JSON与pickle序列化及XML解析等内容,并提供了丰富的示例代码。
1.import 文件名 或是 from 文件名/文件 import 文件/函数
  *先执行文件中的可执行代码
  *引入变量
 注意:1).Python中可以定义同名函数,但是后者会覆盖前者!
           2).import导入文件时,系统会按照指定路径去寻找目标文件。
          这里面路径是指:sys.path()返回值是列表,列表元素包含多个路径,系统会按照列表中的元素一个一个寻找,其中列表第一个是执行文件所在的路径,列表后面的元素是内置文件路径。还要注意默认不是寻找同级目录,而是默认去寻找执行文件所在的目录。
          3).如果所要导入的文件或是函数目录比较深,文件之间可以用.连接
    例如: form file1.file2.file3 import test
补充:

方式一:

    from test import test1 

        *先执行文件中的可执行代码,再引入变量

        *调用test1中的属性或是方法时--->test1.属性/test1.方法

方式二:

    module_t= __import__("test.test1")

        *不会执行文件中的可执行代码

        *上述方法返回值默认是最上一级,即test

         *调用test1中的属性或是方法时---> module_t.test1.属性/ module_t.test1.方法

方式三:

    import importlib

    m=importlib.import_module("test.test1")

        *上述方法返回模块默认是字符串最下一级,即test1

        *调用test1中的属性或是方法时---> m.属性/ m.方法

    

 2.if __name__==__main__:
  注意:如果在执行文件中打印__name__,输出结果是'__main__';如果在被调用文件中打印,则输出被调用的文件名
  作用:1):该语句后面可以写测试代码,而当所在文件被调用时,该语句后的测试代码不会被执行,而如果没有
           if __name__==__main__:这个语句,则是代码会被执行。
  补充:在执行文件中打印__file__,显示的是文件名。如果在PyCharm中打印,其会自动给其加上绝对路径!
 3.时间模块:time
  *时间戳:time.time() 返回结果是一个浮点数,从1970.1.1凌晨到现在一共经历多少秒。‘
  *结构化时间:time.localtime() 返回结果是对象,通过.属性的方式获得年、月、日等相关信息
      t                ime.gmtime() 返回同上,只是返回的时间是格林尼治的时间(比我们本地时间晚8个小时)
   时间戳与结构化时间的转换:
    时间戳-->结构化时间 time.localtime(time.time()) 参数可以省略,因为是默认的
    结构化时间-->时间戳 time.mktime(time.localtime()) 参数不可省略   
  *字符串时间:
   结构化时间-->字符串时间:time.strftime('%Y-%m-%d %X',time.localtime()) 这里面%X表示具体的年月日,也可以用别的表示
   字符串时间-->结构化时间:time.strptime('2018-05-05 16:43:21','%Y-%m-%d %H:%M:%S') 此处的时分秒可以用%X表示
  *time.asctime(): 结构化时间-->固定格式的字符串时间
   time.ctime():时间戳-->固定格式的字符串时间
  *time.sleep(int):睡眠几秒
 4.random模块:
  *random.random():显示0-1之间的浮点数
  *random.uniform(int1,int2):显示int1-int2之间的任意浮点数
  *random.randomint(int1,int2):显示[int1,int2]之间的任意整数
  *random.randrange(int1,int2):显示[int1,int2)之间的任意整数
  *random.choice(序列):随机选取序列中的一个元素
  *random.sample(序列,int):随机选取序列中的int个元素
  *random.shuffle(序列):打乱序列中元素的顺序
  例子:简单的验证码
   def code():
        code_str=''
        for i in range(4):
             num=random.randomint(0,9)
             #65-122是ASCII的a-z A-Z的码值,chr()把数字按照ASCII规则转换成对应的字符
             str1=chr(random.randomint(65,122))
             str2=random.choice(num,str1)
             code_str+=str2
        return code_str
 5.os模块:
  *getcwd():获得当前的工作目录
  *chdir(文件夹):改变当前的工作目录
   chdir('..'):返回到当前工作目录的上一层
  *pardir():等价于chdir('..')
  *makedirs('test1/test2'):生成多层目录
  *removedirs('test1/test2'):删除空的文件夹,若test2空,则删除,若删除test2之后,test1变空,则删除test1,类推...
  *mkdir()/rmdir():创建/删除单级目录
  *remove(str):删除指定文件
  *listdir(str):展示路径下文件夹以及文件
  *rename(str1,str2):把文件str1改名为str2
  *stat(str):返回对象,属性包括文件的大小(字节数),最近访问时间(atime),修改时间(mtime),创建时间(ctime)等
  *sep:输出操作系统特定的路径分隔符(windows:\\ linux:/)
   linesep:输出当前操作系统的行终止符 (windows:\r\n linux:\n)
   pathsep:输出分割文件路径的字符(windows ;  Linux :)
  *path.abspath(str):获取当前文件的绝对路径
  *path.split(path):把文件夹和文件名以二元组的形式返回
  *path.dirname(path):返回文件所在的目录
  *path.basename(path):返回path下的文件名
  *path.exists(path):判断路径是否存在,存在返回True,否则返回False
   path.isabs(path):判断路径是否是绝对路径
   path.isfile(path):判断路径path对应的是否是文件
   path.isdir(path):判断目录是否存在
  *path.join(str1,str2):文件的路径的拼接,之前都用+来拼接,那样会额外开辟新空间。推荐join方法
 6.sys模块:
  *path:以列表的形式返回搜索文件的路径
  *exit():退出程序,正常退出是exit(0)
  *platform():返回操作系统名称
  *argv:
   例子:
      test1.py:
          import sys
          print(sys.argv) #获取python命令的参数值,多个参数用空格分开(多个空格视为一个)
    Python tes1 abc1 abc2 #Python命令运行test1.py 携带参数abc1,abc2.打印结果是:['test1.py','abc1','abc2]
  *类似进度条:
   import time.sys
       for i in range(100):
            sys.stdout.write('*') #等价于print('*')
            time.sleep(0.2)
            sys.stdout.flush() #刷新缓存;否则会把符号暂存缓冲区,等全部结束之后,再把内容显示出来
 7.json模块:
  *json.dumps(object):如果对象中有元素是存在单引号包含的,则统一变成双引号,之后再在对象外面加双引号,转变成json字符串。
   json字符串是大部分高级语言都认的字符串,本质就是str。
  *json.loads(str):把符合json规则的字符串再还原(与eval函数类似,提取str中的数据结构)
   注意:  dumps与loads不是必须同时使用的。
     json字符串:对象里面的元素如果存在str类型的,必须是双引号包含。同时该对象也是字符串类型。(参照dumps方法)
  *json.dump()/json.load():仅限文件操作
   例:
    import json
    dic={"name":"pzz"}
    f=open("test2","w")
    f.write(json.dumps(dic))#等价于json.dump(dic,f) 注意f是必须写的且不变
    f=open("test2","r")
     print(json.loads(f.read()))#等价于print(json.load(f))
 8.pickle模块:与上述json的使用一致,只是json把对象包装成str,而pickle把对象包装成字节bytes。
 9.shelve模块:类似字典的操作,通过给key赋值value的形式来存数据,通过key获取value的形式来取数据
      此模块只有open一个函数。
  例子:
   import shelve
   f=shelve.open(r'test3')
   f["name"]={"name1":"pzz1","name2":"pzz2"}
   系统会在当前工作目录创建三个文件:test3.bak,test3.dir,test3.dat
   
   f.get("name")["name1"] #打印"pzz1"
 10.XML模块:
  *查询xml
   import xml.etree.ElementTree as ET
   tree = ET.parse(xml文件)
   root = tree.getroot() #得到xml文件的根节点
   #遍历xml
   for item1 in root: #for循环的层级取决于xml中标签的层级
       for item2 in item1:
            #tag:获取标签名;attrib:获取标签的属性与属性值(字典形式);text:获取标签包含的文本内容
            print(item2.tag,item2.attrib,item2.text)
   #遍历指定标签
   for node in root.iter('标签') #获取根节点下指定的标签(标签的个数不唯一),不一定是根节点的儿子,可以是孙子或是更远
        print(node.tag,node.attrib,node.text)
  
  *修改xml
   for node in root.iter('标签'):
        new_text=int(node.text)+1 #注意文本内容都是str类型的。
        str(new_text) #修改标签文本
        node.set(属性,属性值) #若有该属性,则修改属性值;若没有该属性,则添加属性与属性值
   tree.write(xml文件) #这一步很关键,把修改后的节点对象写进xml文件中!
  
  *删除:
   for node in root.iter("year"):
        if int(node.text)>0 : #简单的逻辑判断
             root.remove(node) #注意参数不可以是list,即一次只能删除一个标签
   tree.write("xml_lesson")
   
   注意:root.iter(标签) :遍历时打印所有指定标签(打印所有)
      root.findall(标签):打印root下的儿子的指定标签(打印下一级)
  
  *添加:
   import xml.etree.ElementTree as ET
   root=ET.Element("data") #创建根节点
   country=ET.SubElement(root,"country",attrib={"name":"pzz1"})
   city=ET.SubElement(country,"city",attrib={"name":"pzz2"})
   city.text="哈尔滨"
   et=ET.ElementTree(root) #生成文档对象
   et.write("a.xml",encoding="utf-8",xml_declaration=True 
   上述代码效果:a.xml:
   
   <data>
        <country name="pzz1">
             <city name="pzz2">哈尔滨</city>
        </country>
   </data>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值