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
'shsk
sdjjsk
dhjd'
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())

文件及文件的操作-读、写、追加的t和b模式的更多相关文章

  1. 总结day7 ---- 文件操作,读,写,追加,以及相关方法

    内容大纲 一:文件的基本操作, >常见问题 >encoding >绝对路径和相对路径的 二:文件的读写追加相关操作 >读(r, r+ ,rb,r+b) >写(w,w+,w ...

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

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

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

    这里我们用Windows下的shell来举例: from subprocess import * #因为是举例,就全部导入了 为了方便你理解,我们用一个很简单的一段代码来说明: 可以看见我们利用Pop ...

  4. [加入用户]解决useradd 用户后没有加入用户Home文件夹的情况,Linux改变文件或文件夹的訪问权限命令,linux改动用户password,usermod的ysuum安装包。飞

    usermod的yum安装包: shadow-utils 将nobody用户加入到nogroup 组: usermod -g nogroup nobody cat /etc/passwd|grep n ...

  5. Python文件处理:创建、打开、追加、读、写

    在Python中,不需要导入外部库来读取和写入文件.Python为创建.写入和读取文件提供了内置的函数. 在本文中,我们将学习 如何创建文本文件 如何将数据附加到文件中 如何读取文件 如何逐行读取文件 ...

  6. C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....

    本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下 面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...

  7. java读/写文件

    读取文件参考:https://blog.csdn.net/weixin_42129373/article/details/82154471 写入文件参考:https://blog.csdn.net/B ...

  8. Pandas 基础(4) - 读/写 Excel 和 CSV 文件

    这一节将分别介绍读/写 Excel 和 CSV 文件的各种方式: - 读入 CSV 文件 首先是准备一个 csv 文件, 这里我用的是 stock_data.csv, 文件我已上传, 大家可以直接下载 ...

  9. 【练习】Java中的读文件,文件的创建,写文件

    前言 大家好,给大家带来Java中的读文件,文件的创建,写文件的概述,希望你们喜欢 读文件 public static void read(String path,String filename){ ...

随机推荐

  1. 开发:异常收集之 DB2建表相关问题

    第一次用DB2数据库,因为考虑到建表语句可能不一样,所以採用手动建表的办法.一个个字段去填.并勾选主键.最后发现创建失败.看了下系统生成的sql语句 sql语句例如以下: CREATE TABLE F ...

  2. 一起talk C栗子吧(第一百二十四回:C语言实例--内置宏)

    各位看官们,大家好,上一回中咱们说的是显示变量和函数地址的样例,这一回咱们说的样例是:内置宏.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在编译程序的时候,假设有语法错误,编译器就 ...

  3. web 开发之js---ajax 异步处理

    本文介绍了如何创建能够适应不同浏览器的XMLHttpRequest实例,建立和发送请求,并响应服务器.您将开始接触最基本和基础性的有关Ajax的全部对象和编程方法:XMLHttpRequest对象.该 ...

  4. 点滴记录——Ubuntu 14.04中Chrome浏览器标题栏出现中文乱码

    今天不知道在系统里装的哪个软件与Chrome浏览器所用的字体向冲突了,导致标题栏显示的中文都变成了乱码,其次收藏栏中的中文也变成了乱码.导致原有的收藏内容都无法辨认了.在网上搜索了一下,也有人遇到了相 ...

  5. Receiver type ‘X’ for instance message is a forward declaration

    这往往是引用的问题. ARC要求完整的前向引用,也就是说在MRC时代可能仅仅须要在.h中申明@class就能够,可是在ARC中假设调用某个子类中未覆盖的父类中的方法的话.必须对父类.h引用,否则无法编 ...

  6. 2016/4/17 去除 ul ol 前标记 list-style:none list-style-type:none

    对于很多人用div来做网站时,总会用到,但在显示效果时前面总是会有一个小黑点,这个令很多人头痛,但又找不到要源,其它我们可以用以下方法来清除. 1.在CSS中写入代码.找到相关性的CSS,在..li和 ...

  7. jQuery的小例子

    1.在html中插入子页面 <script type="text/javascript"> $(document).ready(function() { $(" ...

  8. UVA10600 ACM Contest and Blackout —— 次小生成树

    题目链接:https://vjudge.net/problem/UVA-10600 In order to prepare the “The First National ACM School Con ...

  9. 深入了解以太坊虚拟机第4部分——ABI编码外部方法调用的方式

    在本系列的上一篇文章中我们看到了Solidity是如何在EVM存储器中表示复杂数据结构的.但是如果无法交互,数据就是没有意义的.智能合约就是数据和外界的中间体. 在这篇文章中我们将会看到Solidit ...

  10. 【Idea】Debug模式

    Idea则是把手标放到你想显示结果的代码上,按Ctrl+F1就显示结果. 如果你想跳到下一个断点直接按F9