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. 使用URLConnection获取网页信息的基本流程

    参考自core java v2, chapter3 Networking. 注:URLConnection的子类HttpURLConnection被广泛用于Android网络客户端编程,它与apach ...

  2. Python之路第十二天,高级(6)-paramiko

    paramiko 一.安装 pip3 install paramiko 二.使用 SSHClient 用于连接远程服务器并执行基本命令 1. 基于用户和密码链接 import paramiko # 创 ...

  3. NET Core的知识

    NET Core的基础知识补遗 阅读目录 前言 在.NET Core之前 在.NET Core起步 .NET Core 1.0 .NET平台 开发环境 FAQ 写在最后 回到目录 前言 .NET Co ...

  4. python----抽象类

    #!/usr/local/python3.5/bin/python3.5 ####实现方法一 class Supper(object): def delegate(self): self.action ...

  5. jdbc 通过rs.getString()获取数据库中的时间字段问题

    例如在mysql中的一张表中存在一个字段opr_time为datetime类型, 在JDBC 中通过rs.getString("opr_time");来获取使会在日期后面添加&qu ...

  6. 关于onclick中的event对象和element对象

    event.srcElement:引发事件的目标对象,常用于onclick事件. event.fromElement:引发事件的对象源,常用于onmouseout和onmouseover事件. eve ...

  7. Ring3下Hook NtQueryDirectoryFile隐藏文件

    NTSTATUS WINAPI Hook_NtQueryDirectoryFile(IN HANDLE FileHandle,IN HANDLE Event OPTIONAL,IN PIO_APC_R ...

  8. HttpRuntime类

    HttpRuntime在ASP.NET处理请求中负责的是创建HttpContext对象以及调用HttpApplicationFactory创建HttpApplication. 其定义如下: publi ...

  9. OpenWrt backfire trunk源码下载及编译

    OpenWrt signature check failed remove wrong signature file svn co svn://svn.openwrt.org/openwrt/bran ...

  10. windows 基于命令行制作vhd虚拟磁盘

    什么是VHD? VHD是Virtual Hard Disk的简称,就是虚拟硬盘,就是能把VHD文件直接虚拟成一个硬盘,在其中能像真实硬盘一样操作,读取.写入.创建分区.格式化.如果你用过虚拟机,就会知 ...