• 文件操作


    一般对于文件,二逼青年是先open再处理,结束后close;文艺青年则with open (文件名) as f:一顿操作

    下面是简单文件操作,将文件1.text中的一些内容修改:

     1 import os
     2 
     3 # 改文件,将所有'a'改成1,'s'改成2
     4 with open('1.text', 'r',encoding='utf-8') as fr,
     5     open('2.text','w',encoding='utf-8') as fw:
     6     for i in fr:
     7         if 'a' in i:
     8             i = i.replace('a','1')  # 字符串替换是需要赋值的
     9         if 's' in i:
    10             i = i.replace('s','2')
    11         fw.write(i)
    12 
    13 os.rename('1.text','3.text')
    14 os.rename('2.text','1.text')
    15 os.remove('3.text')
    View Code

    为什么用with可以省略关闭的过程?

    python中一切皆对象,open相当于是一个类,with open (文件名) as f 等同于(但是不同)f = open(文件名),可见open这个类中自带打开与关闭,即__enter__,__exit__

     1 class Open:
     2     def __init__(self, name):
     3         self.name = name
     4 
     5     def __enter__(self):
     6         print("11111")
     7         return self
     8 
     9 # 可以在exit里面写清理功能,比如close
    10     def __exit__(self, exc_type, exc_val, exc_tb):
    11     # 没有意外情况下三个值是空,当with内部逻辑错误时,将跳过这个逻辑,进入exit,此时三个参数分别是异常类(名),异常值,以及追踪信息
    12         print("22222222")
    13         print(exc_type)
    14         print(exc_val)
    15         print(exc_tb)
    16         return True  # 将异常吞了,不爆红
    17 
    18 
    19 with Open('hello.txt') as f:   # 触发__enter__,拿到返回值给f,即f = Open('hello.txt').__enter__()
    20     print(f)
    21     print("假设一堆逻辑")
    22     print("假设一堆逻辑")
    23     print(aaaaaaaaaaaaaaaaaaaaaaaaaa)  # 错误逻辑,直接触发exit,下面逻辑不能显示,即with语句结束
    24     print("luoji")
    25     print("luoji")
    26 
    27 print("00000000000000000000000")  # 如果没有return True这个也显示不了
    View Code
  • 相关阅读:
    PHP:_SERVER变量和_ENV变量列表
    一些使用jQuery開發的在線Web富文本編輯器
    xhtml+css排版,清理浮动整理汇总
    PHP 6 的新特性
    用PHP的CURL写的一个采集Discuz的例子
    SA、SD、SE 这三者的含义及区分
    PHP 之父 Rasmus Lerdorf 谈PHP开发
    http头的组成
    Jquery插件 可以随着滚动条的滚动而即时加载图片
    在你的网页中嵌入PDF等文件,实现pdf在线阅读
  • 原文地址:https://www.cnblogs.com/maxiaonong/p/9498208.html
Copyright © 2020-2023  润新知