1.什么是文件?

文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位。

文件的操作核心:读和写

对文件进行读写操作就是向操作系统发出指令,操作系统将用户或者应用程序对文件的读写操作转换为具体的硬盘指令。(比如控制盘片转动,控制机械手臂移动来读写数据。)

2.为什么要有文件?

因为内存无法永久存储文件,但凡想要永久保存数据,我们都要将数据保存到硬盘中。而操作文件就可以实现对硬件的操作。

3.如何用文件?

# 把硬盘中的数据都到内存中

#rawstring 原始字符串 缩写为r,为了防止路径转义。

f = open(r"文件路径",mode = "r")  # 向操作系统发起请求,要求操作系统打开文件,占用操作系统的资源。(准备阶段)

date = f.read()  # 向操作系统发起读的请求,操作系统转换为具体的硬盘操作,将内容由硬盘都到内存。

f.close() # 谨记:用该方法对文件进行操作,操作完成后一定要及时关闭文件。(向操作系统发起请求,要求操作系统关闭资源,回收系统资源)

文件关闭后,操作系统已经关闭资源。不能再用f.read()读取文件内容。print(f)依然有输出,就是说还存在准备阶段。

控制读写文件内容的结果有两种:t模式(text)和b(bytes)模式。

注意:

1.t模式和b模式不能单独使用,需要与r/w/a之一连用

2.默认的内容格式为t。

操作文件的基础模式由三种。

1·r  默认的

2·w

3·a

1.r:read  只读模式

只能读,不能写

在文件不存在时,会报错  *****

在文件存在时,会将文件的指针移动到开头

f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt',mode='rt',encoding='utf-8')data1=f.read()print('第一次:',data1)     # 第一次打印结束已经把文件内容读取完毕print(type(data1))

data2=f.read()print('第二次:',data2)   # 第二次打印文件向后没有内容,所以打印为空f.close()

第一次: gddj'shsksdjjskdhjd'sjskks<class 'str'>第二次:

f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt',mode='rt',encoding='utf-8')data2=f.read()print('第二次:',data2)   # 重新加载文件内容到内存,光标移动到头部,可以读取。f.close()

f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt',mode='rt',encoding='utf-8')print(f.readable())print(f.readline(),end='')print(f.readline(),end='')

lines=f.readlines()print(lines)f.close()

w:write只写模式1、只能写,不能读2、在文件不存在时会创建空文件,在文件存在的时候会将文件内容清空(首次会清空,后续写入不会清空前面写入的)  *****f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt',mode='wt',encoding='utf-8')  # 默认为wt模式(默认写入字符串)print(f.readable())  # 不可读f.read()        # 报错,不可读f.write('你好啊我的天\n你好啊我的地\n啊啊啊啊啊啊\n')   # 文件里的内容被清空,后续写入不会被清空。f.write('4444\n')f.write('5555')

lines=['1111\n','2222\n','33333\n']for line in lines:  # 和下面的writelines一样效果    f.write(line)f.writelines(lines)

f.close()

a:只追加写模式1、只能写,不能读 ***2、在文件不存在时会创建空文件,在文件存在的时候会将指针移动到文件末尾 ****

f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt',mode='at',encoding='utf-8')print(f.readable())  # 不可读f.read()

f.write('555555\n6666\n')f.writelines(['77777\n','8888888\n','999999999\n'])

f.close()

b:二进制模式注意:1、一定不能指定字符编码,只有t模式才与字符编码有关 ***2、b是二进制模式,是一种通用的文件读取模式,因为所有的文件在硬盘中都是以二进制形式存放的 ***

f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\TIM图片20180604145353.png','rb')data=f.read()print(data)print(type(data))f.close()<class 'bytes'>

下面的操作就是打开一个视频文件,视频文件以只读的二进制模式加载到内存,然后把视频文件以只写的二进制模式写入到F盘f=open('oldsiji.mp4','rb')data=f.read()f.close()f=open(r'F:\oldsiji.mp4','wb')f.write(data)f.close()

循环读f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt','rt',encoding='utf-8')for line in f:    print(line,end = "")f.close()

f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt','rb')for line in f:    print(line)f.close()

f=open('oldsiji.mp4','rb')for line in f:    print(line)f.close()

f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt','wb')f.write(b'eee')f.write("你好啊".decode("utf-8"))  # 'str' object has no attribute 'decode'f.write("你好啊".encode("utf-8"))

f.close()

f=open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt','ab')f.write('大家好,我是egon'.encode('utf-8'))f.close()

# 上下文管理   *****# 用with会自动帮你运行完关闭操作系统位置的文件,而且with后买你可以跟着多个读写操作 *****with open(r'C:\Users\LENOVO\PycharmProjects\untitled2\db.txt','rb') as f,open(r'C:\Users\LENOVO\PycharmProjects\untitled2\prob','wt',encoding='utf-8') as f1:    # 文件的操作    src_data=f.read()    res=src_data.decode('utf-8')    print(res,type(res))    f1.write(res) # res必须是str,上面是wt格式。

with open('e.txt','rb') as f,\   # 这样写是因为\把\n的转义消掉了。看起来更加美观。        open('j.txt','wb') as f1:    #文件的操作    f1.write(f.read())

转载于:https://www.cnblogs.com/Roc-Atlantis/p/9134018.html

文件及文件的操作-读、写、追加的t和b模式相关推荐

  1. 【学习笔记】23、读写文件(I/O操作)— 写文件

    读写文件(I/O操作)- 写文件 写入文件 同读取文件一样,也是三步走: 打开/新建文件 操作文件 关闭文件 写入使用到的访问模式则是"w",开打一个文件只用于写入,如果该文件已经 ...

  2. day9 python学习 文件的操作 读 写 seek

    文件的操作 1   文件的打开操作: 文件句柄 = open('文件路径', '模式') f=open('wangyakun','a+',encoding='utf-8') #文件名, 如果是绝对路径 ...

  3. Python 3 利用 subprocess 实现管道( pipe )交互操作读/写通信

    http://www.cnblogs.com/suwings/p/6216279.html #run.py from subprocess import * import threading impo ...

  4. mac 修改文件权限为777可读可写可执行

    1,找到要修改的文件夹 2,sudo chmod -R 777 文件夹名. 3,输入管理员密码 chmod是更改文件的权限 chown是改改文件的属主与属组 chgrp只是更改文件的属组. 一.文件权 ...

  5. Numpy简易教程7——读/写文件

    读/写文件 NumPy的文件读/写主要有二进制的文件读/写和文件列表形式的数据读/写两种形式.学会读/写文件是利用NumPy进行数据处理的基础.NumPy提供了若干函数,可以把结果保存到二进制或文本文 ...

  6. python分享文件_Python文件

    一.文件 文本文件:可以处理各种语言所需的字符,只包含基本文本字符,不包括诸如字体,字号,颜色等信息. 可以在文本编辑器和浏览器中显示,即在任何情况下,文本文件都是可读的 二进制文件:每一种二进制文件 ...

  7. python中文件读写位置的作用-Python中文件的读写、写读和追加写读三种模式的特点...

    本文主要讨论一下文件的三种可读可写模式的特点及互相之间的区别,以及能否实现修改文件的操作 由于前文已经讨论过编码的事情了,所以这里不再研究编码,所有打开操作默认都是utf-8编码(Linux系统下) ...

  8. python读文件写文件-python 文件读写操作

    读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...

  9. Python中文件的读写、写读和追加写读三种模式的特点

    本文主要讨论一下文件的三种可读可写模式的特点及互相之间的区别,以及能否实现修改文件的操作 由于前文已经讨论过编码的事情了,所以这里不再研究编码,所有打开操作默认都是utf-8编码(Linux系统下) ...

最新文章

  1. 数据库初学者_面向初学者的免费6小时数据科学课程
  2. @Componet @Resource Spring
  3. 深度学习(二十七)可视化理解卷积神经网络(反池化 pooling unpooling)
  4. Linux 学习笔记_10_Shell编程_2_Shell编程语法(三)
  5. React-事件机制杂记
  6. thinkphp用来做什么项目_thinkphp第1课:使用thinkphp创建一个项目
  7. 安卓页面布局中android:gravity与android:layout_gravity的区别
  8. 第0章 前言(续1)
  9. 超级无敌数字加密算法
  10. 虚拟化—用新的视角看IT
  11. 利用集成学习(Adaboost(DTs))对高光谱影像数据集(mat)分类
  12. 信息路由器动态路由配置
  13. 计算机硬件及组成原理pdf百度云,计算机组成原理整理版本.pdf
  14. 什么是大数据?65页PPT+50分钟视频讲解,小白也能看懂
  15. android加载dex方法,android Dex文件的加载
  16. 程序员职业发展路线图
  17. 英语学术论文简短语句摘抄
  18. TVS 瞬态抑制二极管如何选型?
  19. SNIFFER(嗅探器)基础知识
  20. 获取html元素的高,获取HTML元素的高度jQuery

热门文章

  1. Verilog之条件语句、循环语句、块语句与生成语句
  2. 威联通[vNAS內置虚拟机]体验评测 让企业实现无限可能
  3. C语言教你怎么改变字体颜色
  4. python中并集符号_python中列表之间求差集、交集、并集
  5. 汽车销量查询小助手(小程序)销量趋势图功能及代码知识分享
  6. How to Avoid Branching on the GPU 如何在GPU避免分支
  7. Creo8.0将默认单位永久设置为公制毫米的方法
  8. Satellite7 v2.4 WordPress扁平化风格主题
  9. Zend Framework Smart PHP 项目 移植 APMServ
  10. Java游戏项目开发 王者荣耀 学会你就是最强王者