十.模块和库

1.模块操作:

  • 导入单独的模块:
    • 把模块文件的位置,添加到sys.path中。(不常用)
    • 把模块放到“lib\\site-packages\\”目录下。(PyCharm兼容性更好)
  • 导入包(文件夹):
      • 方法与单独模块一样,且包下面必须要有__init__.py文件
  • #模块目录的查找和打印-------------------------------------------------------
    import sys,pprint
    #查目录
    ModulePath=sys.path
    #可以逐行打印
    pprint.pprint(ModulePath)
    
    
    #模块的导入------------------------------------------------------------------
    #添加模块目录,这种做法不常用
    ModulePath.append("C:\\Users\\i2011\\PycharmProjects\\Python基础教程学习代码\\charpter10---模块和标准库")
    # #添加后可以导入模块
    # import Module_Test
    
    # #也可以把模块放入"lib\\site-packages\\"下
    # import test_hello
    
    #导入目录包,目录下必须要有__init__.py文件
    #导入site-packages下的包,不import其他py文件
    import MyPackage #仅默认导入__init__.py
    import MyPackage.test_hello
    #导入添加的目录的包
    import Package_Test
    import Package_Test.Module_Test
    
    #模块重新导入
    import importlib
    MyPackage=importlib.reload(MyPackage)
    MyPackage.test_hello=importlib.reload(MyPackage.test_hello)
    Package_Test=importlib.reload(Package_Test)
    
    
    #模块的探索---------------------------------------------------------------------
    import copy
    print(dir(copy)) #包含隐藏的内容
    a=[n for n in dir(copy) if not n.startswith("_")] #这样将过滤到_开头的隐藏内容
    print(a)
    #模块中__all__,指定的内容
    #在模块中设置__all__,在from copy import* 语句中导入__all__中指定内容,否则导入所有不以_打头的全局名称
    print(copy.__all__)
    
    #查看模块的帮助
    help(copy.copy)
    
    #查看函数的内置文档
    print(range.__doc__)
    
    #查看模块的位置
    print(copy.__file__)

2.标准库

  • sys与os
    import sys
    print(sys.argv)
    
    import os
    #打开window应用程序,必须按照windows shell格式
    #下面两句将执行win应用,第一句单双引号反了不行
    #os.system(r'C:\"Program Files (x86)"\"Maxthon5"\"Bin"\Maxthon.exe')  #os.system打开外部应用,应用结束后才进入下一句代码
    # os.startfile(r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
    # os.startfile(r"C:\Program Files (x86)\Maxthon5\Bin\Maxthon.exe")
    # os.startfile(r"D:\Program Files (x86)\360Chrome\Chrome\Application\360chrome.exe")
    
    #直接打开网页
    # import webbrowser
    # webbrowser.open("https://www.python.org")
    
    # import fileinput
    # for line in fileinput.input(inplace=True):
    #     line=line.rstrip()
    #     num=fileinput.lineno()
    #     print("{:<50} # {:2d}".format(line,num))
    
    #集合,没有重复的元素
    a=set([1,2,3,4,2,1])
    print(a) #{1, 2, 3, 4}
    #{...}来设定集合,但是不能{},{}表示字典
    b={2,3,8,8,8,8,"abc","abc","abc"}
    print(b) #{8, 2, 3, 'abc'}
    print(a.union(b),a|b,a&b) #集合运算
    #集合是可变的,不能用作字典中的键。集合只能包含不可变(可散列)的值,不能包含其他集合
    a.add(frozenset(b)) #如果要包含其他集合,必须冻结住该集合
    print(a) #{1, 2, 3, 4, frozenset({8, 2, 3, 'abc'})}
  • shelve
    #shelve模块是一个简单的将内存数据通过文件持久化的模块
    #shelve模块用于创建一个永久性映射
    import shelve
    #s得到一个shelf对象
    try:
        s=shelve.open("test.csv",writeback=True)
        s["y"]=["a","b","c"]
        s["y"].append("d")
        info={'age':22,'job':'IT'}
        name=["ZhangYuan","Rain","Test"]
        s["name1"] =name
        s["info1"] = info
        print(dict(s))
    finally: #防止数据库文件受损,在最后应该关闭它
        s.close()

     

 

posted @ 2019-04-01 16:31  观井映天  阅读(273)  评论(0编辑  收藏  举报