python基础知识(七)常用模块----(六)

(七)常用模块----(六)

目录

(七)常用模块----(六)

7.1包

         7.2异常处理


7.1包

a.创建一个目录

import os
os.makedirs('glance/api')
os.makedirs('glance/cmd')
os.makedirs('glance/db')
l = []
l.append(open('glance/__init__.py','w'))
l.append(open('glance/api/__init__.py','w'))
l.append(open('glance/api/policy.py','w'))
l.append(open('glance/api/versions.py','w'))
l.append(open('glance/cmd/__init__.py','w'))
l.append(open('glance/cmd/manage.py','w'))
l.append(open('glance/db/__init__.py','w'))
l.append(open('glance/db/models.py','w'))
map(lambda f:f.close() ,l)

b.文件内容

#policy.py
def get():
    print('from policy.py')

#versions.py
def create_resource(conf):
    print('from version.py: ',conf)

#manage.py
def main():
    print('from manage.py')

#models.py
def register_models(engine):
    print('from models.py: ',engine)

c.import,import...as...

import glance.api.policy
glance.api.policy.get()

import glance.api.policy as policy
policy.get()

#from policy.py

d.from...import...,from...import...as...

import后面不可以带点(.),如from glance import api.policy就是错误的

from glance.api import policy
policy.get()

from glance.api.policy import get
get()
#from policy.py

e.__init__.py

下面代码执行是否有问题,如果有问题如何解决

import glance
glance.api.policy

执行glance包不能打开内部的文件,但会自动打开__init__.py文件

验证我们在__init__.py文件增加代码

import glance
#

说明__init__.py被自动打开了

所以我们在__init__.py文件中添加下图代码就可以完成一开始有问题的代码

这样我们就解决了问题

import glance
glance.api.policy.get()

#from policy.py

f.绝对路径和相对路径

上面所述就是绝对路径

绝对路径:以glance作为起始,文件不可以移动,但是直观

                   使用绝对路径 不管在包内部还是外部 导入了就能用

相对路径:用.或者..的方式最为起始(只能在一个包中使用,不能用于不同目录内)

                可以随意移动包 只要能找到包的位置,就可以使用包里的模块

                包里的模块如果想使用其它模块的内容只能使用相对路径,使用了相对路径就不能在包内直接执行了

                .本层文件 

                ..上层文件

这样我们就可以随意移动glance包到一个新的文件夹里也不需要大量修改__init__.py

from 新包 import glance
glance.api.policy.get()
#from policy.py

7.2异常处理

使用try和except就能处理异常

try:

     被检测的代码块

except 异常类型:

     try中一旦检测到异常,就执行这个位置的逻辑

except支持多分支

有没有一个能处理所有错误的类型 : Exception

有了万能的处理机制仍然需要把能预测到的问题单独处理,单独处理的所有内容都应该写在万能异常之前

else : 没有异常的时候执行else中的代码

try:
    ret = int(input('number >>>'))
    print(ret*'*')
except ValueError:
    print('输入的数据类型有误')
except Exception:
    print('有错误')
try:
    ret = int(input('number >>>'))
    print(ret*'*')
except Exception as error:
    print('错误',error)

finally : 不管代码是否异常,都会执行,finally和return相遇的时候 依然会执行 ,函数里做异常处理用,不管是否异常去做一些收尾工作

def func():
    try:
        f = open('file','w')
        return True
    except:
        return False
    finally:
        print('执行finally了')
        f.close()
print(func())

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值