python异常处理、模块的使用、__all__的调用、模块的发布和安装
2017-07-13 16:41
681 查看
异常处理
__all__=[ ]的使用
cmd安装、发布
setup.py
这里有一点,若文件与要用到的文件都处在同一路径下,则可以调用包;若把包压缩封装好后,在别的路径调用时,则调用已封装好的包,若原来的文件发生改动,不会影响到此时的使用(现在用到的是已打包好的,固定的)
#encoding=utf-8 #异常处理 try: print(33/ 0) open("cc.v") print("处理异常的情况") except (NameError,FileNotFoundError):#这里注意一点,在python3中,错误不能用.连接,需要()表示成元组 print("名字有错误,出现异常") except Exception as ret:#查看异常的类型,异常的具体情况 print('捕获上面异常没有捕获到的') print(ret) else: print("没有异常才会执行的功能") finally: print("是否出现异常都会执行 ") import time try: f=open('D:\\vivien.tang\\桌面\\614问题总结.docx') try: while True: content=f.readline() if len(content)==0: break time.sleep(2)#这里用来延迟时间 print(content) except: print("file") pass finally: f.close() print("关闭文件") except: print("没有这个文件") #异常的传递:像函数一样可以嵌套,嵌套过去的出现异常,如果函数本身没有try,则会反应到调用的函数上面 #抛出自定义异常 class ExceptionCreat(Exception):#其中exception是所有异常的父类'''自定义的异常类''' def __init__(self): print("自定义的类") def main(): try: print() raise ExceptionCreat()#raise引发一个自定义的异常,其实自定义了一个类 except ExceptionCreat as result:#前面是类创建的对象 print("出现这个异常为%s"%result)#result是一个变量,指向自定义的exception对象的引用 else: print("什么都没有发生") class test(object): def __init__(self,switch): self.switch=switch def calc(self,a,b): try: return a/b except Exception as result: if self.switch: print("捕获开启,信息如下:") print(result) else: raise #异常正常的抛出去 a=test(True) a.calc(11,0) ''' 捕获上面异常没有捕获到的 division by zero 是否出现异常都会执行 file 关闭文件 捕获开启,信息如下: division by zero '''
#0表示假,非0表示真,1 -1 "a" #任何的None,[](空列表) {} ()(空元组) ""(空字符串) 0 import random print(random.randint(0,2))#在0到2之间产生一个随机数,0 1 2都有可能 #.py就是一个模块 #linux sudo pip install pygames pip是python中自带的安装工具,是管理python模块的一个工具 #pip是管理python2的工具,pip3是管理python3的工具
#两种导入python模块的方式 #import pygame #若没有提示错误,说明安装成功 #import 模块的名称,不需要加.py #在调用模块时,会在调用模块中中间生成一个文件(.pyc 字节码),便于翻译运行 #from 模块名 import 方法名 #在调用的方法太多时,采用上面的方式效率低 #from 模块名 import * #尽量少用import* #from send import * #from rece import * //若两个文件中有相同的函数名,则后面的函数会将前面的替换掉,尽量少用* # import time as test #给模块起个别名,若模块名太长的话,可以用来替换 print(__name__)#如果是在执行模块,而不是调用,则结果为__main__ #若调用模块的话,结果为调用该模块的模块名 #为了保证只在本模块测试的时候调用某些方法,则采用: #if __name__==="__main__"
__all__=[ ]的使用
#encoding=utf-8 from learn_All import * test1() print(num)#若learn_All 模块中没有将全局变量放入到__all__=[]中时,则不能访问
#encoding=utf-8 __all__=["test1","test2","num"]#列表里面存放当import all_learn from *,所导入进去的函数 def test1(): print("---test1---") def test2(): print("---test2----") num=100 #这种全局变量也需要存放到__all__中才可以访问 class Test(object): pass
#encoding=utf-8 from learn_All import * test1() print(num)#若learn_All 模块中没有将全局变量放入到__all__=[]中时,则不能访问
#若一个文件夹下面有很多模块,我们不能通过导入文件夹再导入模块的方式调用模块
#需要在文件夹下添加模块__init__.py 来调用文件夹下的模块,整个文件夹称之为包
#__init__.py的作用使文件夹称为一个包
#为了使得包中的模块被调用,在__init__.py中进行修改:
#__all__=["模块名"]
#在import 文件夹名 时会执行__init__.py
#
#在__init__.py中
#__all__=["模块名"] 在导入文件夹后就可以调用模块
#下面的方法适用于python2
#import 模块名 可以这么使用:文件夹.模块名.函数名
#python3中的使用
#from . import 模块名
#
#若文件夹中有__init__.py,则称之为包,将文件夹下的东西导入到__init__.py中
import os
os.__file__ #python解释器默认安装的模块的路径
#将包放在系统路径上,每次调用时不需要考虑路径问题
#在当前路径在新建一个setup.py
#
#在__init__.py中输入:__all__=["learn_All","testHello"],调用下面的方法 from packTest import testHello testHello.test() from packTest import learn_All#这种方法适用于python3 learn_All.test1() #在__init__.py中输入: #from . import learn_All #from . import testHello #.表示当前路径 #在python3中调用时可以采用这种方式: import packTest packTest.learn_All.test1() #packTest.learn_All.test1()
cmd安装、发布
#encoding=utf-8 #将文件安装到系统中去,任何路径下都可以直接访问 #发布及安装 #在与安装包同一路径下新建setup.py,其中的输入包相关的信息 #python setup.py build #python setup.py sdist生成发布压缩包,在同一目录下生成dist,下面有个压缩包 #cp dist/dollar-1.0.zip #python setup.py install#安装到系统默认的模块路径 #import packTest from packTest import learn_All#这种方法适用于python3 learn_All.test1() #packTest.learn_All.test1()
setup.py
#encoding=utf-8 from distutils.core import setup setup(name="dollar",version="1.0",description="setup",author="dollar",py_modules=["packTest.learn_All","packTest.testHello"]) #后面存放要发布的模块名
#encoding=utf-8 __all__=["test1","test2","num"]#列表里面存放当import all_learn from *,所导入进去的函数 def test1(): print("---test1---") def test2(): print("---test2----") num=100 #这种全局变量也需要存放到__all__中才可以访问 class Test(object): pass
#在__init__.py中输入:__all__=["learn_All","testHello"],调用下面的方法 from packTest import testHello testHello.test() from packTest import learn_All#这种方法适用于python3 learn_All.test1() #在__init__.py中输入: #from . import learn_All #from . import testHello #.表示当前路径 #在python3中调用时可以采用这种方式: import packTest packTest.learn_All.test1() #packTest.learn_All.test1()
#encoding=utf-8 #将文件安装到系统中去,任何路径下都可以直接访问 #发布及安装 #在与安装包同一路径下新建setup.py,其中的输入包相关的信息 #python setup.py build #python setup.py sdist生成发布压缩包,在同一目录下生成dist,下面有个压缩包 #cp dist/dollar-1.0.zip #python setup.py install#安装到系统默认的模块路径 #import packTest from packTest import learn_All#这种方法适用于python3 learn_All.test1() #packTest.learn_All.test1()
这里有一点,若文件与要用到的文件都处在同一路径下,则可以调用包;若把包压缩封装好后,在别的路径调用时,则调用已封装好的包,若原来的文件发生改动,不会影响到此时的使用(现在用到的是已打包好的,固定的)
相关文章推荐
- python异常处理、模块的使用、__all__的调用、模块的发布和安装
- python2.7图像处理相关模块安装使用异常
- python2.7使用pip安装模块报错Unable to find vcvarsall.bat
- 64位win7中使用vs2013为python3.4安装pycrypto-2.6.1插件报Unable to find vcvarsall.bat异常解决方式
- windows下python调用R语言的模块rpy2安装使用
- Python:使用getopt模块处理命令行参数
- Red Hat/Fedora Linux 上使用 yum 安装 python pip 模块
- python处理图片之PIL模块简单使用
- python mysql 模块安装使用
- 使用setuptools自动安装python模块
- Windows下安装Python SSH模块及其使用
- 使用setuptools自动安装python模块 [转]
- 使用setuptools自动安装python模块
- 【转】使用setuptools简化Python模块的安装
- 在python中使用cx_Oracle模块出现“DLL Load failed”的处理方法
- 使用Cygwin和 mingw 安装 python paramiko模块
- 使用setuptools自动安装python模块
- 如何使用和制作 Python 安装模块(setup.py)
- 使用setuptools自动安装python模块(稍作修改)
- python中使用struct模块处理二进制数据