python文件处理及装饰器

Posted madq_boke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(\n+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

 

以上是关于python文件处理及装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python闭包及装饰器

[python] 之 装饰器

python装饰器原理及相关操作

PYTHON装饰器用法及演变

python基础之装饰器

Python3——装饰器及应用(这个属于详细的)