Python05_常规模块

1,定义:
    模块:逻辑上组织python代码,本质就是.py结尾的python文件
 
    包:用来从逻辑上组织模块。本质是一个目录,但是它带有一个__init__.py文件
 
2,导入方法
    import module1,module2  可以通过模块名.变量,模块名.函数()来调用。相当于解释器把导入的模块的代码解释了一遍,然后模块中的代码赋值给了变量名为模块名的变量。
    
    from 模块名 import *  导入该模块中的变量函数等一切,当然*也可以是具体的变量或者函数,而且在外面使用时不用通过模块名.变量这种方式调用,而是可以直接使用变量,函数。相当于解释器只把模块中的import之后内容导入到新文件,然后执行了一遍。
    不推荐使用这种方式,原因是牺牲了可读性,其次变量名,函数名可能会冲突。
  
      from 模块名 import 变量或函数 as 变量别名或者函数别名      采用此种方式导入后,可以在外面文件中直接使用别名来访问或是调用。
 
3,ipmort的本质
导入模块的本质是解释python文件,解释执行该文件时,需要先搜索该文件,搜索的路径是在sys.path列表路径去搜索,如果所有路劲都没有该模块,就会找不到,执行报错。因此可以手动添加环境变量。
#将项目根路径添加进环境变量的末尾
sys.path.append(root_path)
 
#将项目根路径添加进环境变量的指定位置
sys.path.insert(index,root_path)
 
导入包import 包名的本质是解释执行包下的__init__.py文件。因此要导入其他包下的模块,需要在被导入包下的__init__.py中使用from . import module,然后在导入包文件加上import packageName就可以了。上面的.是相对于__init__.py文件的相对路径。导包也可以使用from directory import  packageName,表示导入directory目录下的指定包
 
4,导包优化
当需要反复使用另一个模块下的某个方法时,使用from module import method会比较好。
 
5,模块的分类    
    a,标准库  
    b,开源模块
    c,自定义模块
 
    time与datetime:
        时间表现形式:时间戳(距离1970年1月1日的秒数),格式化的时间字符串,元组(共九个元素,年月日,时分秒,一周的第几天,一年的第几天,是否是夏令时(0代表不是夏令时))tim
        time.
 
 
      random随机数模块
            random.random()生成0到1的随机数,是浮点数[0,1)
          char(number)   number的范围是0~127,返回字符
          str(object)  将object转化为字符串形式
          eval(expression)    expression为字符串表达式,eval()用于执行字符串表达式,并返回那个值。
          random.randint(1,5) #生成[a,b]的随机整数
          random.randrange(1,2) #生成[a,b)的随机整数
          random.choice("hello") #参数是序列,包含元组,字符串,列表,随机取一个元素
          random.sample("hello world!",2) 从给定的序列中随机取给定个数的元素,返回结果是列表
          random.uniform(1,3) #生成[0,1)的随机小数
 
          alist = [1,3,4,2,8,4]
          random.shuffle(alist) #随机打乱序列的元素顺序,该方法没有返回值
          print(alist)
            
     
      os模块
        path分隔符,windows是;,linux是:
            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       返回操作系统平台名称
            sys.stdout.write('please:')
            val = sys.stdin.readline()[:-1]
 
   shutil模块   高级的 文件、文件夹、压缩包 处理模块
        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)        递归的去拷贝文件
            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对象
 
shelve模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
        import shelve
        d = shelve.open('shelve_test') #打开一个文件
        class Test(object):
        def __init__(self,n):
            self.n = n
        t = Test(123)
        t2 = Test(123334)
        name = ["alex","rain","test"]
        d["test"] = name #持久化列表
        d["t1"] = t      #持久化类
        d["t2"] = t2
        d.close()
 
  
   Xml模块
   xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是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>
xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作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)
 
修改和删除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("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) #打印生成的格式
 
 
七、ConfigParser
用于对特定的配置进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser。
# 注释1
; 注释2
 
[section1]
k1 = v1
k2:v2
 
[section2]
k1 = v1
 
import ConfigParser
 
config = ConfigParser.ConfigParser()
config.read('i.cfg')
 
 
# ########## 读 ##########
#secs = config.sections()
#print secs
#options = config.options('group2')
#print options
 
#item_list = config.items('group2')
#print item_list
 
#val = config.get('group1','key')
#val = config.getint('group1','key')
 
 
# ########## 改写 ##########
#sec = config.remove_section('group1')
#config.write(open('i.cfg', "w"))
 
#sec = config.has_section('wupeiqi')
#sec = config.add_section('wupeiqi')
#config.write(open('i.cfg', "w"))
 
 
#config.set('group2','k1',11111)
#config.write(open('i.cfg', "w"))
 
#config.remove_option('group2','age')
#config.write(open('i.cfg', "w"))
hashlib模块
hello

猜你喜欢

转载自www.cnblogs.com/python-eason/p/12631405.html