1、文件处理:

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

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

先说怎么打开一个文件:

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

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

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

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

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

下面看一个示例:

 f1 = open('test','r')
for line in f1:
print(line)
f1.close()
#运行结果就是
one line two line three line

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

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

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

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

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

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

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

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

 #主执行程序
f1 = open('test','r+')
for line in f1:
print(line)
new_line = 'three line'
f1.write('\n'+new_line)
f1.close()
#存放文件test
one line
two line #当执行第一遍是,显示的结果是
one line
two line
#当执行第二遍时,显示的结果是
one line
two line
three line
#从这个例子,你可以初步了解,该怎么去读取,写入一些内容

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

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

 #test.py文件
def outer(func):
def inner(*args,**kwargs):
print('before')
r = func(*args,**kwargs)
print('after')
return r
return inner @outer
def f1(args):
print(args)
return 'kankan' @outer
def f2(a1,a2):
print(a1,a2) #func_dy.py调用文件,也是执行文件
import test ret = test.f1('canshu')
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,这其中的调用比较复杂,在这里很难把详细的调用过程说的很明白,以后如果有这相关更多的实例,再呈现给大家,下面是输出的结果:

 before
canshu
after
kankan

python文件处理及装饰器的更多相关文章

  1. Python模块化编程与装饰器

    Python的模块化编程 我们首先以一个例子来介绍模块化编程的应用场景,有这样一个名为requirements.py的python3文件,其中两个函数的作用是分别以不同的顺序来打印一个字符串: # r ...

  2. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  3. python函数与方法装饰器

    之前用python简单写了一下斐波那契数列的递归实现(如下),发现运行速度很慢. def fib_direct(n): assert n > 0, 'invalid n' if n < 3 ...

  4. guxh的python笔记三:装饰器

    1,函数作用域 这种情况可以顺利执行: total = 0 def run(): print(total) 这种情况会报错: total = 0 def run(): print(total) tot ...

  5. python设计模式之内置装饰器使用(四)

    前言 python内部有许多内建装饰器,它们都有特别的功能,下面对其归纳一下. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python设计模式之装饰 ...

  6. python 3.x 的装饰器笔记

    今天学到了python的装饰器,感觉这个东西还是稍微有些复杂,所以记录下来,方便以后的查找.虽然标题是python 3.x的装饰器,但是我也没有怎么用过python 2.x,感觉上应该是和python ...

  7. python 中多个装饰器的执行顺序

    python 中多个装饰器的执行顺序: def wrapper1(f1): print('in wrapper1') def inner1(*args,**kwargs): print('in inn ...

  8. Python函数编程——闭包和装饰器

    Python函数编程--闭包和装饰器 一.闭包 关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数).而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数.当其中一个 ...

  9. python基础-内置装饰器classmethod和staticmethod

    面向对象编程之classmethod和staticmethod classmethod 和 staticmethod都是python内置的装饰器 classmethod 的作用:给在类内部定义的方法装 ...

随机推荐

  1. oracle之Flash Recovery Area全面介绍 (转载)

    1. 设置闪回恢复区闪回恢复区主要通过3个初始化参数来设置和管理 db_recovery_file_dest:指定闪回恢复区的位置db_recovery_file_dest_size:指定闪回恢复区的 ...

  2. CSS3动画之旋转魔方盒

    步骤: 1.大盒子里盛放六个子盒子代表立方体的6个面: 2.子盒子开启3d效果  transform-style:preserve-3d; 3.上下面沿X轴旋转90度,一个上移盒子一半高,一个下移盒子 ...

  3. 关于tuple的只读特性

    a = (1,3,[5,4,1]) a[2][1] = 2 print(a) 结果是:(1,3,[5,2,1]) 可以看到,在这里tuple的内容被修改了. 原因就是tuple的“只读”属性是指tup ...

  4. bootstrap的datetimepicker控件只选择年月的配置

    <script src="{% static "jquery/jquery-1.11.3.min.js" %}"></script> & ...

  5. linux多线程编程之互斥锁

    多线程并行运行,共享同一种互斥资源时,需要上互斥锁来运行,主要是用到pthread_mutex_lock函数和pthread_mutex_unlock函数对线程进行上锁和解锁 下面是一个例子: #in ...

  6. FileMode枚举

    FileMode枚举是一个简单枚举,用于指定操作系统打开文件的方式. 枚举成员 成员值 描述 CreateNew 1 指定操作系统应创建新文件,如果文件存在则引发异常. Create 2 指定操作系统 ...

  7. g++ error: expected nested-name-specifier before 'XXX'

    template <typename addrT=int,typename valuT=int,typename stream_addrT=bm_addr,typename stream_siz ...

  8. Linux系统目录/bin /sbin /usr/bin /usr/sbin和/lib /usrlib的一些分析

    其实就是相当于转载了. /bin,/sbin,/usr/sbin,/usr/bin 目录 这些目录都是存放命令的,首先区别下/sbin和/bin: 从命令功能来看,/sbin 下的命令属于基本的系统命 ...

  9. 【Python】Coding the Matrix:Week 5: Dimension Homework 5

    这一周的作业,刚压线写完.Problem3 没有写,不想证明了.从Problem 9 开始一直到最后难度都挺大的,我是在论坛上看过了别人的讨论才写出来的,挣扎了很久. Problem 9在给定的基上分 ...

  10. 几个简单的css设置问题:div居中,ul li不换行 ,内容超出自动变省略号等

    1  div在页面居中的问题 1)position值为relative时(相对定位),css设置属性margin:0 auto;(0 auto,表示上下边界为0,左右则根据宽度自适应相同值,即居中)即 ...