.Tang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

文件操作:

# w 写入模式 如文文件不存在,就创建文件如文件存在,则清空文件 (不可读取)
# r 只读模式 文件不存在的时候报错 (不可写入)
# a 追加写入模式 不清空之前文件,直接在最后位置添加新的内容 不存在则创建
# x 写入模式 文件存在会报错,不存在则创建

# b 以二进制读取文件

# + 可读写模式 r+,w+,x+,a+,这几种模式还遵循了r,w,a,x的基本原则。

#插入  写入模式是覆盖模式                                          
# 光标的位置seek ,定位insert,

#字节,windows为gbk编码, python字符串为unicode

一:文件读写的普通操作

  • f=open('test.txt','w')            #打开文件,w 写入模式,如文文件不存在,就创建文件。如文件存在,则清空文件

    f.write('python是最好的语言')                 # 写入内容,放在缓存里了,但没有进入磁盘

    f.flush()                  #将缓存的写入磁盘

    f.close()

二:上下文管理器

  • with open('test.txt','w')   as f:            #结束后自动关闭文件

    f.write('python是最好的语言')                 # 写入内容,放在缓存里了,但没有进入磁盘

    f.flush()                  #将缓存的写入磁盘

  • class GeneratorContextManager:
        def __init__(self, func):  # func must be a generator
            self.gen = func('mysql')
    
        def __enter__(self):
            return self.gen.send(None)
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            """这三个参数是发生异常时,捕获的异常数据"""
            if exc_type is None:
                next(self.gen)  # 执行yield之后的命令,并结束🔚
            else:
                self.gen.throw(exc_type, exc_val, exc_tb)
    
    
    def func(name):
        for i in range(3):
            print(i)
            yield i
            print(f"之后")
            print(f"包括第二次yield之前,也就是0过了就是1")
    
    with GeneratorContextManager(func):
        print('sssss')
    >>>
    0
    sssss
    之后
    包括第二次yield之前,也就是0过了就是1
    1
    
    with GeneratorContextManager(func):
        print('sssss')
        raise Exception('oh')  # 模拟用户异常
    >>>
    0
    sssss
    Exception: oh
    
    

     

     

     

异常捕获:

one:  try

try:

a=input('输入数字:')

new_a=int(a)+1
print(new_a)

except Exception: 
print('error')

>>>输入数字:a

error

>>>输入数字:10

11

two:    assert 断言

def ces():
  a=input('输入数字:')
  assert a.isdigit()==True,'error100'                           #True正常运行代码,False执行后面的字符串
  new_a=int(a)+1
  print(new_a)

three:    raise

def ff(n):
  if n>1:
    raise Exception('你大于1就是你的错',n)
    print('有种运行我') #不会运行
  return None

 

 

posted on 2017-12-06 15:35  .Tang  阅读(502)  评论(0编辑  收藏  举报