7.2 文件的常见操作

一、文件的打开和关闭

      1.1 打开方式

      1.2 文件的简单操作

      1.3 打开文件的方式

二、按行读取文件的内容

       演练:文件复制

 

 

open()                #打开文件,并返回file对象

file.close()

file.read()           #一次性读取整个文件

file.readlines()   #一次性读取,放到一个列表中

file.readline()     #读取一行

 

file.write()

file.tell()             #返回文件当前的位置。

file.seek()

 

 

一、文件的打开和关闭

1.1  打开方式

方式一:

file = open("文件路径", "打开模式", encoding="字符编码")

...

file.colse()

 

 

方式二:

with open("文件路径", "打开模式", encoding = "字符编码") as f:

       ...

 

使用第二种方式的好处是,执行完毕后,自动对文件进行close操作。

 

 

编码方式默认是gbk,如果中文还是读不出来,可以试试:utf-8,

 

 

1.2 文件简单读写操作

file = open("README")       #如果文件存在,返回文件操作对象;如果不存在,抛出异常。

text = file.read()                   #一次性读入并返回文件中的所有内容。【例1】

file.close()                            #如果忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问。

 

 

例1:

 

结果:

 

补充:文件指针。当执行了read()之后,文件指针就指向文件末尾了。再read()就读不了了。【例2】

 

 

例2:

 

结果:

 

 

1.3  Python打开文件的方式

前面学了file = open("aaa.txt"),没有传递第二个参数。这时候Python会默认以只读方式打开文件。这时候就只能读,不能写入数据。

 

"r"       #只读。如果文件不存在,会报错。 

“w”      #只写。如果文件不存在,会创建。写的时候会覆盖,每次都从头写。【例2】。注意每次打开是从头写,在一次打开的过程内还是一直往后写的。【例3】

“a”       #追加写。如果文件不存在,会创建。写的时候会从文件尾继续写。【例4】

“x”       #创建写。如果不存在就创建。如果存在就报错。

 

关于“r+”、“w+”、“a+”等 有个印象就好。

"r+" :

 

“w+”

 

"a+"

 

 

 

 

 

例2:

首先看一下README中的内容:

 

然后编写test.py文件:

 

执行后:

 

文件内容改变了。


 

 

例3:

首先看一下README中的内容:

 

 

编写test.py:

结果:

 

 

 

例4:

首先看一下README中的内容:

 

然后编写test.py文件:

 

结果:

 

 

 

二、文件读取操作详解

read()                            #一次性读取所有内容

readlines()                    #一次性读取,放到一个列表中。

readline()                      #读取一行内容

 

 

2.1  read()

前面介绍过,这里详细介绍一下。

 

text = read()           一次性读取所有内容,并赋给一个字符串变量。

text = read(5)         读入指定的字节数。

 

 

2.2  readlines()

readlines()          #一次性读取整个文件。每一行一个字符串,保存到一个列表中。

 

 

例:

aaa/abc.txt 内容如下:

 

读取:

 

结果:

 

 

 

2.3 readline()

read()和readlines()方法一次性会把所有的内容都读出来。如果文件太大,内存可能不够。

readline()方法,一次可以读取一行内容。当执行了readline()后,文件指针会移动到下一行,这样就可以再次读取了。【例1】

readline()方法写起来有点麻烦。而我们打开的文件,本身就是可迭代对象,我们可以每次迭代读取一行内容。【例2】

 

 

 

例1:

README内容为

 

test.py

 

结果:

 

如果不写end="",会再空一行。这是因为,读取的文件每一行的末尾本身有一个换行符。而print()语句如果不写end的话,默认有一个换行。所以会再空一行。

 

例2:

 

结果:

 

 

 

 

三、文件写入操作详解

3.1 write()

将字符串写入到文件中。

 

例1:写之前文件为:

 

覆盖写:

 

结果:

 

 

 

 

3.2 writelines()

将列表中存储的字符串写入文件中。

 

例:

 

结果:

 

 

 

 

四、演练:文件拷贝

情况(1):如果文件较小,一次性可以读入

 

情况(2):如果文件较大,需要一行一行读入

 

 

 

其中,第二行 也可以写成“w”也没问题。因为后面的循环并没有关闭文件,所以写到哪里,文件指针就指在哪里,并不是从头开始写。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值