第八章:python文件操作

8.1 文件的读取

8.1.1 open()打开函数

在Python语言中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:
open(name, mode, encoding)

  • name:要打开的目标文件名(或者文件所在的具体路径)。
  • mode:设置打开文件的模式(访问模式):只读、写入、追加等。
  • encoding:编码格式(推荐使用UTF-8)
  • 返回值:open类的对象;对象是Python中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性或对象.方法对其进行访问。
f=open("D:/出生日期.txt",'w',encoding="UTF-8")

#encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定
#注意:使用open类的构造函数生成f对象时,会初始化文件的指针,指向文件开头

mode常用的三种基础访问模式:

模式 功能 描述
r 只读 以只读方式打开文件,文件的指针会放在文件的开头。这是默认模式。
w 写入 打开一个文件用于写入。如果该文件已存在,则原有内容会被删除,并从开头开始编辑;如果该文件不存在,则创建新文件。
a 追加 打开一个文件用于追加。如果该文件已存在,则新的内容将会被写入已有内容之后(文件的指针会放在已有内容之后);如果该文件不存在,则创建新文件进行写入。

测试.txt  文件内容:

我爱你

你爱我吗?

你爱我什么?

读操作

1、read(num)方法

返回值:字符串形式的读取内容

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

f=open("测试.txt",'r',encoding="UTF-8")

print(f.read(3))     #输出  我爱你
print(f.read())      #输出 你爱我吗?
                     #     你爱我什么?
"""
使用open类的构造函数创建f对象,文件的指针初始化为文件的开头
调用f.read(3),会从指针开始往后读取3个元素
再调用f.read(),指针已经在三个元素之后,所以从现在的指针位置开始往后读取,直到结束
"""

2、readlines()方法

返回值:列表形式的读取内容

按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表list,其中每一行的数据为一个元素。

f=open("测试.txt",'r',encoding="UTF-8")

print(f.read(2))       #输出  我爱
print(f.readlines())      #输出 ['你\n','你爱我吗?\n','你爱我什么?']
                          
"""
使用open类的构造函数创建f对象,文件的指针初始化为文件的开头
调用f.read(2),会从指针开始往后读取2个元素
再调用f.readlines(),指针已经在2个元素之后,所以从现在的指针位置开始往后读取,直到结束
"""

3、readline()方法

返回值:字符串形式的一行内容

只读取一行内容。

4、for循环读取文件行

for line in open("测试.txt",'r')
    print(line)

#每一个line临时变量,记录了文件的一行数据
#line是字符串型

5、close()方法

关闭文件对象

6、with open 语法

#通过在with open的语句块中对文件进行操作
#可以在操作完成后自动关闭close文件,避免遗忘掉close方法

with open("测试.txt",'r') as f:
    print(f.read(3))
    print(f.readline())
    print(f.readlines())

8.2 文件的写入

#1、以写操作打开文件,若文件不存在,则会创建文件
#   若文件存在,则会清空原有内容
f=open("D:\test.txt",'w',encoding="UTF-8")

#2、文件写入,写入的内容在内存缓冲区,打开文件看不到
f.write("helloworld!!!")

#3、内容刷新,打开文件能看到新写的内容
f.flush()
  • 直接调用write方法,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush方法的时候,内容会真正写入文件
  • 攒一堆,一次性写入磁盘(这样做可以避免频繁的硬盘操作,导致效率下降)

 注意:close方法内置了flush方法。

8.3 文件的追加

#1、以追加操作打开文件,若文件不存在,则会创建文件
#   若文件存在,则会在原有内容的末尾添加内容
f=open("D:\test.txt",'a',encoding="UTF-8")

#2、文件写入,写入的内容在内存缓冲区,打开文件看不到
f.write("helloworld!!!")

#3、内容刷新,打开文件能看到新写的内容
f.flush()

你可能感兴趣的:(python基础语法知识,python,pycharm)