python学习笔记-文件基本操作(二)

在上一篇文章中,简单介绍了打开文件的方法以及关于读、写、追加的操作,点击此处查看。

在此篇文章中,继续介绍另外一种打开文件的方法和几种同时读写的模式。

一、打开文件方法:with

使用file()或open()打开文件时,最后一定要使用close()方法来关闭文件,为了避免忘记使用,还使用使用with的方法开打开文件,代码如:

with open (‘文件名‘,‘模式‘)   as  f:
    ...

其中,f为文件句柄,该打开文件的方式等同于f=open(‘文件名‘,‘模式‘)

此方法也可以一次打开多个文件,如:

with open (‘文件名1‘,‘模式‘)   as  f1,open(‘文件名2‘,‘模式‘) as f2.....:
    ...

当文件过多时,会导致一行代码过长的情况,因此推荐使用如下写法:

with open (‘文件名1‘,‘模式‘)  as  f1,    open (‘文件名2‘,‘模式‘)  as  f2:
       ...

我们来使用closed()判断文件是否关闭

#使用open()方法打开,不加入close()
>>> f=open(‘info.log‘,‘r‘)
>>> print f.closed()
False

#使用open()方法打开,加入close()
>>> f=open(‘info.log‘,‘r‘)
>>> f.close()
>>> print f.closed()
True

#使用with打开
>>> with open (‘info.log‘,‘r‘):
>>> print f.closed()                  #注意print一定要与with处于同一个结构层次下
True

二、几种同时读写模式

在python中除了普通打开模式(r、w、a)外,还有几种同时读写的模式,包括:

  r+:读写,可读可写,若文件不存在,报错

  w+:写读,可读可写,创建新文件

  a+:追加和读,可读可追加,若文件不存在,则创建

三、指针

为了便于理解同时读写模式,首先引入指针

有一个文件info.log  文件内容如下:

①获取文件句柄所在的指针tell()

例子:

>>> f=file(‘info.log‘,‘r‘)
>>> print f.tell()             #获取初始时的指针
>>> print f.readline()         #读取文件第一行
>>> print f.tell()             #获取读完第一行后的指针
>>> f.close()
0                       #第一次指针的位置
aaaa
5                              #第二次指针的位置

②设置文件句柄所在的指针seek() 

例子:

>>> f=file(‘info.log‘,‘r‘)
>>> print f.tell()
>>> print f.readline()
>>> f.seek(3)             #设置指针位置
>>> print f.tell()
>>> f.close()

四、读写:r+

代码:

#使用r+打开文件时,不用read()
>>> f=open(‘info.log‘,‘r+‘)
>>> f.seek(5)           #指针指向第二行
>>> print f.tell()
>>> f.write(‘1111‘)
>>> print f.tell()
>>> f.close()
5
9

文件结果:

注意:当使用r+打开文件时,如果使用了read(),那么不管指针在哪里,用write()方法时,新增的内容始终在文件结尾,除非在read()后重新指定了指针。如下:

>>> f=open(‘info.log‘,‘r+‘)
>>> f.readline()          #读取文件第一行内容
>>> print f.tell()
>>> f.write(‘1111‘)
>>> print f.tell()
>>> f.close()
5
25

文件结果:

五、写读:w+

>>> f=open(‘info.log‘,‘w+‘)
>>> print f.read()
>>> f.write(‘1111\n‘)
>>> f.write(‘2222‘)
>>> print f.tell()
>>> pring f.read()
>>> f.seek(0)
>>> print f.read()
>>> f.close()
#执行结果
                     #由于是w+模式,因此会先覆盖原文件内容,此时内容为空,print f.read()  结果为空
8                    #两次write()后,查看指针位置
                     #此时指针处于文件末尾,pring f.read()的结果为空
11112222             #重新把指针指向文件开头后,再print f.read(),有结果

六、追加读:a+

>>> f=open(‘info.log‘,‘a+‘)
>>> print f.tell()
>>> print f.read()
>>> f.write(‘1111‘)
>>> print f.tell()
>>> print f.read()
>>> f.seek(0)
>>> print f.read()
>>> f.close()
#执行结果
21                              #应为是a+模式打开,指针会指向文件结尾
                                #指针在文件结果,因此print f.read()内容为空
25                              #写入内容后,查看指针位置
                                #写入内容后,指针还是在结尾,因此print f.read()内容还是为空
aaaa                            #重新定位指针后,print f.read()出的内容
bbbb
ccccc
dddd

  

时间: 2024-09-30 07:57:09

python学习笔记-文件基本操作(二)的相关文章

Python 学习笔记(十二)Python文件和迭代(一)

文件 文件和文件夹 文件:文本文件.二进制文件 文件夹:(windows) G:\pythonWorkspace\python\study (linux/mac) /home/workspace/python 注意:文件夹路径的斜杠linux与windows不同 windows下文件路径:示例 1 >>> p1="G:\pythonWorkspace\python\study\test.txt" 2 >>> p2 =r"G:\pythonW

Python学习笔记——文件操作

python中,一切皆对象.   一.文件操作流程 (1)打开文件,得到一个文件句柄(对象),赋给一个对象: (2)通过文件句柄对文件进行操作: (3)关闭文件. 文件对象f通过open()函数来创建. open函数常用的三个参数:文件路径/名称.模式.encoding. 1 f = open('测试文件','r',encoding='utf-8') 2 print(f.read()) 3 f.close() 二.open函数中模式参数的常用值 值 描述 'r' 读模式 'w' 写模式 'a'

Python学习笔记——文件

1.文件只是连续的字节序列 open()内建函数是打开文件之门的钥匙 file_obj=open(file_name,access_mode='r/w/a,' buffering=-1) file_name是要打开的文件名,可以是相对路径或者绝对路径. assess_mode代表打开文件的模式,r表示只读,w表示写入,a表示追加.还有一个U模式,代表通用换行支持 使用r和U的文件必须存在,使用W模式打开文件若存在则首先清空,然后重新创建.‘a’模式写入的数据全部都追加到问价的末尾.还有‘+’表示

python学习笔记系列----(二)控制流

实际开始看这一章节的时候,觉得都不想看了,因为每种语言都会有控制流,感觉好像我不看就会了似的.快速预览的时候,发现了原来还包含了对函数定义的一些描述,重点讲了3种函数形参的定义方法,章节的最后讲述了PEP8的一些重要的规范,在学习的过程中还是学到了些知识. 2.1  if 语句 if语句就不多说了,经常跟else if .. 和 else ..一起使用,如下所示: >>> x = int(raw_input("Please enter an integer: "))

python学习笔记文件操作(六)

1.文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 如下文件: 2017-03-24 11:25:06:349 - info: [debug] [AndroidBootstrap] Sending command to android: {"cmd":"shutdown"} 2017-03-24 11:25:06:355 - info: [debug] [AndroidBootstrap] Received command 

Python学习之文件操作(二)

CSV文件处理 在Python中处理CSV文件可以使用模块csv.有关csv模块的官方资料看这里. 1 读取csv文件 csv.reader(csvfile, dialect='excel', **fmtparams) 使用reader()函数来读取csv文件,返回一个reader对象.reader对象可以使用迭代获取其中的每一行. >>> import csv >>> with open('userlist.csv','rt') as csv_file: csv_co

Python学习笔记 for windows 二

函数 abs(-20)                                        //结果为:20,绝对值函数 def 函数名称([参数1,参数2,参数3]): 执行语句 return def test(r): s=3.14*r*r return s s=test(1) print s                                            //结果为:3.14 cmp(x,y)                                  

Python学习笔记(十二) 使用模块

摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431845183474e20ee7e7828b47f7b7607f2dc1e90dbb000 本文章完全用于个人复习使用,侵删: 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env python3 # -*- coding: utf-8 -*- ' a test module ' _

Python学习笔记(十二)

一.报错处理 Python中可以通过: try: 相关语句块 except 错误类型 as e: print("except:",e) finally: print("finally") 来进行错误的侦测和处理 二.Python中错误的继承 Python中的错误也是class Python中所有的错误类型都继承自BaseException 如果Python中的错误没有被捕获,则其会一层一层的向上抛出,直至被编译器所捕获 三.记录错误 Python中可以通过loggi