一、打开文件
文件的操作步骤:
• 打开文件
• 对文件进行各种操作(读、写)然后保存
• 关闭文件

文件会有一个返回值。返回一个对象,这个对象就表示的是当前的文件。

先在桌面创建一个两行内容为‘刘亦菲’‘刘德华’的txt文件,如图:

调用open()来打开一个文件,可以将文件分为2中类型
• 一种 纯文本文件(使用utf-8编码编写的文件)
• 一种 二进制文件(图片 mp3 视频…)
open()打开文件时,默认是以文本文件的形式打开的。

1、open()函数
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
常用形式是接收两个参数:文件名(file)和模式(mode)
使用 open() 函数一定要保证关闭文件对象,即调用 close() 函数。
参数说明:

file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
opener:

mode 参数有:
模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。

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

    例如:
file_name=r'C:\Users\01\Desktop\test.txt' #绝对路径
obj=open(file_name)    #open返回对象就是当前打开的这个文件file_namecontent=obj.read()    #对这个打开的文件进行读写等操作
print(content)obj.close()
obj.read()

结果:

报错,即表示文件关闭状态不能读。

2、with()函数(上下文管理器),不用写close()来关闭,它自带关闭。

file_name=r'C:\Users\01\Desktop\test.txt'
with open(file_name) as f:content=f.read()print(content)f.read()

结果:

3、一般会结合着try except使用

file_name=r'C:\Users\01\Desktop\1.txt'    try:with open(file_name) as f:content=f.read()print(content)
except:print(f'{file_name}文件不存在')

结果:

4、文件的读取
(1)通过read()来读取文件的内容
• 通过read()读取文件内容时会将文件中所有的内容全部读取出来。
• read()可以接收一个size作为的参数,该参数用来指定要读取字符的数量。默认值为-1.-1也就是要读取全部的内容。如果字符的数量小于size,则会读取所有的;如果读取到最后的文件,则会返回空串。
• 每次读取都会从上次读取到的位置开始(并覆盖掉上一次的)。

(2)较大文件的读取
• 如果对于读取的文件比较大的话。一次性的将文件加载到内容中,容易导致内存泄露。所以对于较大的文件,不要直接调用read()
• readline() 该方法用来读取一行(并覆盖掉上一次的)
• readlines() 该方法用于一行一行的读取内容,它会一次性将读取到的内容封装到一个列表当中返回。

file_name=r'C:\Users\01\Desktop\test.txt' try:with open(file_name) as f:content=f.read(2)print(content)
except:print(f'{file_name}文件不存在')

结果:

file_name=r'C:\Users\01\Desktop\test.txt' try:with open(file_name) as f:content=f.read(2)content=f.read(2)  #覆盖掉上一次的读取print(content)
except:print(f'{file_name}文件不存在')

结果:


5、对于覆盖的处理

file_name=r'C:\Users\01\Desktop\test.txt' try:with open(file_name) as f:for i in range(2):content=f.readline()   print(content)
except:print(f'{file_name}文件不存在')

结果:

6、写入
write()来向文件中写入内容
• 该方法可以分多次向文件写入内容
• 写入完成之后该方法会返回写入的字符的个数
使用open()函数打开文件时,必须要指定打开文件要做的操作(读、写、追加)。如果不指定操作类型,则默认是读取文件,而读取文件是不能向文件中写入
• r 表示只读
• w表示可以写。使用w写入文件时,如果文件不存在则会创建一个文件。如果文件存在则会覆盖原文件内容。

由上图可知,txt文件中原有的内容被覆盖掉了。

7、二进制文件的读写操作
二进制文件:指视频、音频、图片等。
读取文本文件时,size是以字符为单位。读取二进制文件时,size是以字节为单位。
我们用wb来写入二进制文件。

file_name=r'C:\Users\01\Desktop\文末.jpg'   with open(file_name,'rb') as f:content=f.read()print(content)

结果:

又如:

打开文件、文本文件的读写、二进制文件的读写相关推荐

  1. python读写二进制文件(读写字节数据)

    python读写二进制文件(读写字节数据) 你想读写二进制文件,比如图片,声音文件等就是常见的二进制文件. 使用模式为 rb 或 wb 的 open() 函数来读取或写入二进制数据.比如: # Rea ...

  2. (P60)io流类库:文件读写,二进制文件的读写,文件随机读写tellp、tellg、seekp、seekg

    文章目录 1.文件读写 2.二进制文件的读写 3.文件随机读写tellp.tellg.seekp.seekg 1.文件读写 文本读写方式1:<<, >>, 文本读写方式2:ge ...

  3. 磁盘文件的正常读写与异步读写

    磁盘文件的正常读写与异步读写 转自:http://222.30.226.10/hhcmc/study/teach_vc/teach_sp_52.htm 在Win32系统下文件可以支持平常的同步读写和异 ...

  4. [转]VC6.0无法打开文件和无法向工程添加文件的解决办法

    今天用VC开发的时候,新建两个类后,发现没有要类视图那里显示,在文件那里也没看到,于是就想自己手动把这两个类加到工程中去,没想到一点添加文件就发生内存读写错误.开始以为是软件出错了,重启软件后,还是一 ...

  5. 【文本文件与二进制文件的区别;文件打开与关闭的方法、不同读写方式】(学习笔记19--文件上)

    目录 文件的打开与关闭 文件的打开 文件的关闭 标准文件流 文件流的重定向 文件的读写 以字符的方式读写文件 以行的方式读写文件 以格式化的方式读写文件 以块的方式读写文件 文件的打开与关闭 文件的实 ...

  6. C++:文件操作2 文本文件和二进制文件的读写

    文件读写的步骤: 1.包含的头文件:#include <fstream>//使用文件流进行操作 2.创建流 3.打开文件(文件和流关联) 4.读写 (写操作:<<,put( ) ...

  7. c语言 fopen、fwrite、fread、fclose函数(打开文件进行读写覆盖或追加)

    文章目录 fopen函数 描述 声明 参数 返回值 实例 fwrite函数 描述 声明 参数 返回值 实例 fread函数 描述 声明 参数 返回值 实例 fclose函数 描述 声明 参数 返回值 ...

  8. C++文本文件操作和二进制文件读写

    文本文件操作: 代码如下: #include <iostream> #include <fstream> using namespace std;void test01() { ...

  9. 高级语言程序设计II 实验报告三c++使用文本文件和二进制文件的读写比较两者的区别和优劣...

    高级语言程序设计II 实验报告三 姓名:许恺 学号:2014011329 日期:2015年5月25日 1. 实验目的 通过在c++中使用文本文件和二进制文件的读写比较两者的区别和优劣,同时锻炼c++的 ...

最新文章

  1. 隐马尔可夫模型(Hidden Markov Model,HMM)是什么?隐马尔可夫模型(Hidden Markov Model,HMM)的三个基本问题又是什么?
  2. 基于Pytorch的动态卷积复现
  3. JAVA构造方法,继承关系和SUPER关键字
  4. Perl匿名数组、hash和autovivification特性
  5. 可视化神器背后的奥秘
  6. wxWidgets:wxArtProvider类用法
  7. unity 解决乱码_Unity3d中IOS应用出现乱码怎么办?
  8. python每行输出5个数_python打印杨辉三角及输出第m行第k个数
  9. 最速下降法和牛顿方法的Python实现和MATLAB实现
  10. html______1
  11. mysql省市区递归查询_mysql递归查询
  12. 高鸿业宏观经济学第七版答案
  13. 接入百度智能云文字识别OCR记录
  14. 高仿知乎android客户端,仿知乎分享界面
  15. 2.3 数据库-深入理解
  16. 塞班java软件下载,附项目源码
  17. 独立游戏开发者的一些PR经验
  18. c语言水平制表符作用,C语言课:VC6.0中水平制表符和退格符的进一步说明
  19. html5手机壳,这款帅炸的手机壳,能够让你的iPhone秒变安卓
  20. Linux-memo

热门文章

  1. Win7 快捷方式变成浏览器图标解决
  2. Vue(四)Vue脚手架——手把手教你安装和使用
  3. 【科普干货】一张图看懂Salesforce最新产品结构
  4. java瀑布图表,教大家Excel如何制作瀑布图
  5. spark 常用算子
  6. 保存CAD文件提示:按回车键取消或 [重试(R)]
  7. 找不到夺神之权服务器,10月19日夺神之权服务器停机更新公告
  8. 申通 圆通 快递发货的运费计算方式
  9. 关于考研群5378146的声明
  10. talk7x装linux,酷比魔方U51GT-C4(TALK7X四核)ColorOS2.0 ROM下载