zoukankan      html  css  js  c++  java
  • python文件处理及装饰器

    1、文件处理:

         Python处理文件的流程比较简单,大致分为以下几个:

                   打开文件==》处理文件==》生成新文件==》写入文件

         先说怎么打开一个文件:

              打开一个文件可以有多种写法,下面咱一个一个的看其中的异同点:

                    <1>,使用file打开一个文件和使用open打开一个文件,理论上是没啥区别的,就看个人的习惯,不过在Python3之后,貌似不能使用file去打开一个文件了,在Python2中则都可以使用,下面看这句代码:

                     f1 = open('a.txt','r');

                     先说下括号中的意思:第一个是要打开的文件名称,第二个参数表示的是以只读的方式打开a.txt文件,第二个参数还可以写成其它的形式(比如:w,只写的方式打开;r+,可读可写;w+,写入文件之前,先清空文件等等)

                     以这种方式打开的文件,必须执行f1.close(),来关闭文件,不然资源就无法释放,只有等到垃圾回收机制来回收,但是这个时间是不固定的,也是不可控制的;

                     下面看一个示例:

                     

     1 f1 = open('test','r')
     2 for line in f1:
     3     print(line)
     4 f1.close()
     5 #运行结果就是
     6 one line
     7 
     8 two line
     9 
    10 three line

                  解释:先看第一行,就是以只读的方式打开test文件,然后使用for循环对文件中的行进行遍历,这里在in后面也有几种写法,分别是

                           f1.read():调用这个方法的意思是读取每个字符,都当做一行来进行输出。

                           f1.readline():把第一行的每个字符当做一行来进行输出

                           f1.readlines():遍历每一行,并输出,其实它跟直接写对象文件,显示的效果都是一样的,但还是推荐后者,效率更高一些。

                 <2>,还有一种打开文件的方式,这种方式不需要执行close()方法:

                         with open('test','r') as f1:

                          以这种方法打开的文件,不需要执行f1.close(),就会自动关闭。

                 <3>,下面通过一个实例,来具体的说明下该怎么样操作文件:

     1 #主执行程序
     2 f1 = open('test','r+')
     3 for line in f1:
     4     print(line)
     5 new_line = 'three line'
     6 f1.write('
    '+new_line)
     7 f1.close()
     8 #存放文件test
     9 one line
    10 two line
    11 
    12 #当执行第一遍是,显示的结果是
    13 one line
    14 two line
    15 #当执行第二遍时,显示的结果是
    16 one line
    17 two line
    18 three line
    #从这个例子,你可以初步了解,该怎么去读取,写入一些内容

    二、下面看一下装饰器(不过就心而论,我对装饰器的理解还是很片面的,在这里,只想分享下我的理解)

          装饰器的作用是在操作一个函数前和后面执行一些操作;不多说,先看个例子,然后我们针对这个例子,来进行简单的说明:

     1 #test.py文件
     2 def outer(func):
     3     def inner(*args,**kwargs):
     4         print('before')
     5         r = func(*args,**kwargs)
     6         print('after')
     7         return  r
     8     return inner
     9 
    10 @outer
    11 def f1(args):
    12     print(args)
    13     return 'kankan'
    14 
    15 @outer
    16 def f2(a1,a2):
    17     print(a1,a2)
    18 
    19 #func_dy.py调用文件,也是执行文件
    20 import test
    21 
    22 ret = test.f1('canshu')
    23 print(ret)

    说明:

             func_dy.py是执行文件,通过导入test模块(其实就是刚才建的test.py文件)里的f1函数,并传递给一个值,然后打印输出。

             test.py文件是被调用文件,它里面才真实的做了装饰器的模型,@函数名 就是装饰函数用的,其实在你调用f1函数的时候,在test.py内部,是把f1函数传递给func,也可以把inner函数跟f1函数画上等号。

             在执行过程中,显示输出before,然后输出在func_dy.py中传递的参数'canshu'的值,然后输出after,最后,会调用f1函数的return方法,返回kankan,这其中的调用比较复杂,在这里很难把详细的调用过程说的很明白,以后如果有这相关更多的实例,再呈现给大家,下面是输出的结果:

    1 before
    2 canshu
    3 after
    4 kankan
  • 相关阅读:
    2019-2020-2 20174313张博《网络对抗技术》Exp5 信息搜集与漏洞扫描
    2019-2020-2 20174313张博《网络对抗技术》Exp4 恶意代码分析
    2019-2020-2 20174313张博《网络对抗技术》Exp3-免杀原理与实践
    2019-2020-2 20174313张博《网络对抗技术》Exp2-后门原理与实践
    2019-2020-2 20174313张博 《网络对抗技术》Exp1 PC平台逆向破解
    Exp9 Web安全基础
    实验八 Web基础
    实验七-网络欺诈防范
    MSF基础应用
    信息搜集与漏洞扫描
  • 原文地址:https://www.cnblogs.com/madq-py/p/5558034.html
Copyright © 2011-2022 走看看