(一)文件的编码

1. 编码

编码是一种规则集合,记录了内容和二进制间进行相互转换的逻辑
编码有许多种,最常用的是utf-8

2. 使用编码的原因

计算机只能识别二进制数,因此要将文件的内容翻译为二进制数,才能保存进计算机内
同时也需要编码,将计算机保存的二进制数,反向编译回可识别的内容

(二) 文件的读取

1. 文件的基本操作步骤

打开文件
读写文件
关闭文件
! 可以只读,不写

2. 文件的基本操作函数

编号 关键字 使用方法 作用
1 open 文件对象 = open(file,mode,encoding) 打开文件获得指定文件对象
2 read 文件对象.read(num)

读取指定长度字节

不指定num读取文件全部

3 readline 文件对象.readline() 读取一行
4 readlines 文件对象.readline() 读取全部行,得到列表
5 for for line in 文件对象 for循环文件行,一次循环得到一行数据
6 close 文件对象.close() 关闭文件对象
7 with open with open() as f 通过with open语法打开文件,可以自动关闭

! 读取文件后,要用进行关闭,否则文件一直被占用

完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。

****注意:mode 参数有:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(Python 3 不支持)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

默认为文本模式,如果要以二进制模式打开,加上 b 。

file 对象

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

序号 方法及描述
1

file.close()

关闭文件。关闭后文件不能再进行读写操作。

2

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

3

file.fileno()

返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

4

file.isatty()

如果文件连接到一个终端设备返回 True,否则返回 False。

5

file.next()

Python 3 中的 File 对象不支持 next() 方法。

返回文件下一行。

6

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。

7

file.readline([size])

读取整行,包括 "\n" 字符。

8

file.readlines([sizeint])

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

9

file.seek(offset[, whence])

移动文件读取指针到指定位置

10

file.tell()

返回文件当前位置。

11

file.truncate([size])

从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。

12

file.write(str)

将字符串写入文件,返回的是写入的字符长度。

13

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

练习:word.txt文本内容

"""
演示对文件的读取
"""
# 打开文件
import time                                                                                                                   f=open("C:/Users/cs/Desktop/work.txt","r",encoding="UTF-8")   #这里我犯了一个错误,直接复制了文本的路径,发现不对,原因是斜杠的方向不一样
print(type(f))                                                                                                                # 读取文件 - read()
print(f"读取第3个字节的结果:{f.read(3)}")
print(f"read方法读取全部内容的结果是:{f.read()}")    #当出现多个read语句时,会发现f.read()不会读取全部内容,只会读取没有被read使用过的内容,原因是文件操作会续接前的命令操作,读者不懂可以将这两个输出语句全部输出或者注释掉一个,只输出一个语句就能懂了                                 # 读取文件 - readLines()
lines=f.readlines()     #读取文件的全部行,封装到列表里
print(f"lines对象的类型:{type(lines)}")
print(f"lines对象的内容是:{lines}")   #输出为空,原因是文件前面的9 10行读取文件 ,就像指针一样,第9行指针在第3个字后面,执行第10行后,之后在最后了,所以对象内容为空的                         

# 打开文件
import time                                    f=open("C:/Users/cs/Desktop/work.txt","r",encoding="YTF-8")
line1=f.readline()
line2=f.readline()
line3=f.readline()
print(f"第一行数据是:{line1}")
print(f"第二行数据是:{line2}")
print(f"第三行数据是:{line3}")                       # for循环读取文件行
for line in f:                                 print(f"每一行数据是:{line}")
# 文件的关闭
f.close()
time.sleep(500000) #程序暂停执行50万秒         l       

"""
演示对文件的读取
"""
# 打开文件
import time# with open 语法操作文件  自带关闭功能
with open("C:/Users/cs/Desktop/work.txt","r",encoding="UTF-8")  as f:for line in f:print(f"每一行的数据是:{line}")  #for 循环这两行代码运行完自动关闭了
time.sleep(500000)

对于同一个文件的操作,每一行的命令都会续接上面的代码 ,所以就出现了代码中注释的那几条解释

实例:读取文本内容的次数

文本内容为:

离离原上草,
一岁一枯荣。
野火烧不尽,
春风吹又生。
远芳侵古道,
晴翠接荒城。
又送王孙去,
萋萋满别情。
一二一

方法1:

"""
练习读取文件内容的次数
"""
# 打开文件
f=open("C:/Users/cs/Desktop/work.txt","r",encoding="UTF-8")
# 方法1:读取全部内容,同字符串count方法统计一这个字的数量
content=f.read()
count=content.count("一")
print(f"一 在文件中出现的次数为{count}")
#关闭文件
f.close()

方法2:

# 方法2:读取内容,一行一行读取
count=0  # 变量来增加次数
for line in f:line =line.strip()  #去除开头和结尾的空格以及\n换行符words=line.split(" ")for word in words:if word == "一":count+=1
print(f"一 出现的次数为:{count}")#关闭文件
f.close()

(三) 文件的写入

1. 写操作快速入门:

(1) 使用open的“w”模式进行写入

(2) 文件写入:f.write()

(3) 内容刷新:f.flush()

! 直接调用write,内容并未真正写入文件,而是积攒在程序的内存中,称为缓冲区

! 当调用flush时,文件才会真正写入文件

! 这样避免频繁的操作硬盘,导致效率下降

这里是写入不存在的文件

"""
演示文件的写入
"""
# 打开文件,不存在的文件
import timef=open("C:/Users/cs/Desktop/text.txt","w",encoding="UTF-8")
# write写入
f.write("HelloWorld") #内容写到了内存中,需要调入flush写入硬盘
# flush刷新
f.flush()
time.sleep(60000)
#close关闭
f.close()   # close方法,内置了flush的功能,也就是说  哪怕你没调用flush,但是调用了close,依旧可以写入内存

这里演示写入已经存在的文件中,会自动清除原有文本中的内容,重新写入新值

"""
演示文件的写入
"""# 打开一个存在的文件
f=open("C:/Users/cs/Desktop/text.txt","w",encoding="UTF-8")
#write写入,flush刷新
f.write("heima")
# f.flush()
time.sleep(60000)
# close关闭
f.close()

2. 注意事项:

w模式,文件不存在,会创建新文件
w模式,文件存在,会清空原有内容
close方法,具有flush方法的作用

(四) 文件的追加

1. 追加写入操作的快速入门

(1) 使用open的“a”模式进行写入

(2) 文件写入:f.write()

(3) 内容刷新:f.flush()

2. 注意事项

  • a模式,文件不存在,不会创建文件
  • a模式,文件存在,会在最后追加写入文件
    # 打开一个存在的文件
    f=open("C:/Users/cs/Desktop/text.txt","a",encoding="UTF-8")
    #write写入,flush刷新
    f.write("baima")
    # f.flush()
    time.sleep(60000)
    # close关闭
    f.close()

    因为追加功能和写入功能是一样的,因此就写了一个文件存在,追加写入文件的例子

Python学习笔记--文件操作相关推荐

  1. python学习笔记之操作文件,模块使用

    文件操作: 基础操作: 创建/打开文件: #语法 file=open(filename,mode='r',buffering=-1,encoding=None,errors=None,newline= ...

  2. PHP学习笔记-文件操作1

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52294237 本文出自:[顾林海的博客] 前言 PHP支持文件上传功能 ...

  3. python学习日记(文件操作)

    文件操作概述 计算机系统分为:操作系统,计算机硬件,应用程序. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序 ...

  4. Python学习之文件操作

    一.文件File 通过Python程序来对计算机中的各种文件进行增删改查的操作 - I/O(Input / Output) - 操作文件的步骤: ① 打开文件 ② 对文件进行各种操作(读.写),然后保 ...

  5. C语言学习笔记---文件操作 fopen()函数 和 fclose()函数

    fopen()函数   在C语言中fopen()函数用来打开文件.该函数声明在stdio.h中.它的第一个参数是待打开文件的名称,更确切的说是一个包含文件名的字符串地址.第二个参数是一个字符串,指定待 ...

  6. Python学习(文件操作)

    文章目录 一.文件操作 1.1 常见的文件类型 1.2 文件操作的流程 1.3 文件的打开与关闭 打开 文件对象的属性 关闭 1.4 文件的读写: 读 写 1.5 定位读取 1.6 with open ...

  7. Python 学习笔记——文件对象和操作

    Python的文件处理和相关输入输出能力.介绍文件对象(它的内建函数,内建方法和属性),标准文件,同时讨论文件系统的访问方法,文件执行,以及相关文件模块. 一,内建函数open()和file() 语法 ...

  8. Python学习:文件操作

    一.打开文件 1.格式 在python,使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件,语法如下: open(name, mode) name:是要打开的⽬标⽂件名的字符串(可以包含 ...

  9. Python学习之==文件操作

    1.打开文件的模式 1 r,只读模式(默认)[不可写:文件不存在,会报错] 2 w,只写模式[不可读:不存在则创建:存在则删除内容] 3 a,追加模式[不可读:不存在则创建:存在则追加内容] 4 r+ ...

最新文章

  1. Android移动开发之【Android实战项目】在Service中弹出Dialog对话框,即全局性对话框
  2. acwing算法题--混合背包问题
  3. Spring官网改版后下载方式
  4. 判断 iframe 是否加载完成的完美方法
  5. 使用MessageFormat格式化数字,日期
  6. 从闭包函数的变量自增的角度 - 解析js垃圾回收机制
  7. html5中如何使图片滚动条,如何使RMarkdown代码块中出现垂直滚动条(html视图)
  8. Python中的分组函数(groupby、itertools)
  9. 行业报告归档 2019.2.8
  10. python将txt中文文本转二进制文本及转回
  11. linux 日志输出中文乱码_linux 日志中文乱码
  12. jeecms v9图标不显示问题
  13. Base64与bitmap之间相互转换
  14. keep-alive 组件缓存的用法
  15. Python 文件IO操作
  16. html5 css背景图片满,css background-size与背景图片填满div
  17. 为数据而生:大数据创新实践八步骤
  18. android手机屏幕分辨率
  19. 【Linux】Debian的下载、安装、图形化界面,多图杀猫
  20. win10系统颜色设为豆沙绿的设置方法

热门文章

  1. 20230222作业
  2. SA-NET: Shuffle attention for DCNN 论文学习
  3. 抖音、腾讯世纪大和解,透露了哪些信息?
  4. php订阅号发送消息,php实现微信公众号主动推送消息
  5. 从西方的七宗罪入手,提升自己
  6. [小记] 微信小程序 - 人脸识别前端(一)初体验
  7. c语言程序设计五子棋棋盘怎么画,五子棋的棋盘画不出来,求助!!
  8. 2000-2020年上市公司常用指标数据集
  9. 三江学院计算机学院教师列表,刘正涛(计算机科学与工程系)老师 - 三江学院 - 院校大全...
  10. OpenStack 企业私有云的若干需求(7):电信行业解决方案 NFV