西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > 开发教程 > python教程 >

python文件处理及装饰器

时间:2016-06-04 10:07来源:未知 作者:好模板 点击:
1、文件处理: 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
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容