一、基本流程

  • 打开文件得到文件句柄
  • 将文件句柄赋值给一个变量
  • 通过文件句柄对文件进行操作
  • 关闭文件

二、基本操作

1、文件句柄

 f = open("a.txt",encoding="utf-8")  #f为文件句柄,通过文件句柄我们进行操作
data = f.read()
'''
该操作是在内存中运行:读取硬盘中的文件,即将二进制读取出来
所以要提供编码方式,因为存入的时候是以utf-8编码的,所以在
读取时要使用utf-8
'''

2、文件读写编码问题

在读的时候:指定打开编码,该编码与写入文件的编码需要一样否则会乱码
在写的时候:指定写的编码,不能使用不同的编码,否则打开的时候容易乱码

3、文件的读写模式

只读模式:默认就为只读模式

 f = open("a.txt","r",encoding="utf-8")
data = f.read()
f.readable() #判断一个文件是不是可读
f.close() #打开文件后必须关闭文件

读取一行和读取多行

读取一行

 f = open("a.txt","r",encoding="utf-8")
data2 = f.readline()
print(f.readline(),end="")
'''
注意:在同一个文件句柄中,是一行一行读,读取完后
光标的在文件最后的。同时在读取的时候会出现换行现
象,可以在打印的时候加上end = ""来取消换行
'''
f.close() #打开文件后必须关闭文件

读取多行

 f = open("a.txt","r",encoding="utf-8")
data3 = f.readlines() #读取文件的所有行,并且以列表的形式表现出来
f.close() #打开文件后必须关闭文件

只写模式:写的参数必须为字符串,不能为其他类型

 f = open('yesterday2.txt','w',encoding='utf-8') # 只写模式,若文件存在则会覆盖,若文件不存在,则创建一个文件
f.write('I love you')

以列表的形式写入多行:

 f = open("b.txt","w",encoding="utf-8")
f.writelines(["aaa\n","bbb\n","ccc\n"]) #以列表的形式写入多行
f.close()

追加操作:

 f = open('yesterday','a',encoding='utf-8') #追加,也可读,不存在则创建,存在则在末尾追加,只能在末追加
f.write('I love you')
f.close()

打开文件的第二种形式:

 #常用的打开文件方式,在对文件进行操作的时候要在with内部
with open('yesterday','r',encoding='utf-8') as f,\
open('yesterday.txt','r',encoding='utf-8') as f2: #这种方式打开文件会自动关闭,而且可以同时打开多个文件
f.read()

 文件的b模式:

rb模式:

 '''
bytes读写优点:处理图片,视频等文件等
''' #rb读
# f = open("a.txt","rb",encoding="utf-8") b的方式不需要指定编码,以为硬盘存的就是二进制 #存取过程 字符串------>encode()------->bytes
#读取过程 bytes------>decode()------->字符串 f = open("a.txt","rb")
data = f.read()
f.close() #wb写 f1 = open("b.txt","wb") #写wb指以bytes写
# f.write(b"aaaa\n") #写的时候必须是bytes类型,不能用这种方式,因为没有指定编码方式
f.write(bytes("aaaaa",encoding="utf-8")) #指定以什么编码方式,变成bytes类型的
f.writelines("aaaaa".encode("utf-8")) #这种方式也可以 #ab写: f2 = open("b.txt","ab") #在写的时候,写到最后一行
f.write("aaaaa".encode("utf-8"))

+默式:

 #只写模式
f = open('yesterday','r+',encoding='utf-8')
f.read() #若是先读再写,则是在文件内容后面追加,即从光标上写
f.write('maibeyby') #是直接写,则是从开头写,把原来内容覆盖,而不是挤出去
f.close() # f = open('yesterday','w+',encoding='utf-8') #写读模式,必须先写入,在把光标移至开始才能读,没什么用
# f.write('i love you')
# f.seek(0)
# print(f.read()) # f = open('yesterday','a+',encoding='utf-8') #在追加中增加可读模式
# f.seek(0)
# print(f.read())
# f.write('\ni love you1')

文件处理其他方法:

 '''
在Windows中换行为\r\n,而pyhon解析出来的是\n,这是Python里面经过
处理了,这样是为了避免不同操作系统的换行不一样而处理的,要想显示其
原本的换行符,在打开文件的时候加上newline=""
'''
f = open("c.txt","w",encoding="utf-8",newline="")
# f.encoding #显示文件打开的编码
'''
我们写的数据是存在内存上,不会马上存入硬盘,使用flush()可以马上将它存
入硬盘,操作系统会每隔一段时间使用一下flush()。
'''
f.flush() #将内存的数据刷到硬盘上
fl = open("a.txt","r+",encoding="utf-8")
'''
文件光标处理:
除了read()以外,read读取的是字符,其他方法的光标是以字节为单位的
'''
print(fl.tell() ) #先显示当前光标位置 0
print(fl.readline()) #读取一行
print(fl.tell()) #显示光标所在的位置, 32
fl.seek(0) #可以控制光标的为在0是按字节的方式

Python 全栈开发八 文件处理的更多相关文章

  1. python全栈开发-Day7 文件处理

    python全栈开发-Day7   文件处理 一 .文件操作 一 .介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必 ...

  2. python全栈开发_day8_文件的多种读写方式及游标

    一:文件的多种读写方式 主方式:w    r    a 从方式:t     b    + 了解方式:x    u 1)按t(按照字符进行操作): with open("data_1.txt& ...

  3. python全栈开发学习_内容目录及链接

    python全栈开发学习_day1_计算机五大组成部分及操作系统 python全栈开发学习_day2_语言种类及变量 python全栈开发_day3_数据类型,输入输出及运算符 python全栈开发_ ...

  4. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  5. Python全栈开发【基础一】

    Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...

  6. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  7. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  8. Python 全栈开发【第0篇】:目录

    Python 全栈开发[第0篇]:目录   第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...

  9. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

随机推荐

  1. win怎么设置最快捷的下滑关机

    win怎么设置最快捷的下滑关机 1.在C:\Windows\System32下找到SlideToShutDown.exe文件发送一份到桌面快捷方式 2.右键此快捷方式--属性--更换图表--更换一个自 ...

  2. [Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络)

    [Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络) 地址:http://www.eoeandroid.com/thre ...

  3. Python----八荣八耻

    以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制粘贴为耻; 以多态应用 ...

  4. vmware 中安装Ghost XP 版本心得

    安装是肯定是选择 ISO映像文件,第一次进入真能进入Ghost选择界面, 无论你第一次 进入的是pe 或 一键分区还是 ghost到C盘最后你再重启就总是让你按任意键或Ctrl+Alt+Del 自然想 ...

  5. Java并发编程的4个同步辅助类(CountDownLatch、CyclicBarrier、Semphore、Phaser)

    我在<jdk1.5引入的concurrent包>中,曾经介绍过CountDownLatch.CyclicBarrier两个类,还给出了CountDownLatch的演示案例.这里再系统总结 ...

  6. Vue 超快速学习

    Vue 超快速学习 基础知识: 1.vue的生命周期: beforeCreate/created. beforeMount/mounted. beforeUpdate/updated. beforeD ...

  7. 深入 Vue 生命周期

    深入 Vue 生命周期 这篇博客将会从下面四个常见的应用诠释组件的生命周期,以及各个生命周期应该干什么事 1.单组件的生命周期 2.父子组件的生命周期 3.兄弟组件的生命周期 4.宏mixin的生命周 ...

  8. toggle显示与隐藏切换

    jQuery中显示与隐藏切换toggle方法 show与hide是一对互斥的方法.需要对元素进行显示隐藏的互斥切换,通常情况是需要先判断元素的display状态,然后调用其对应的处理方法.比如显示的元 ...

  9. HiveQL之Sort by、Distribute by、Cluster by、Order By详解

    在这里解释一下select语法中的order by.sort by.distribute by.cluster by.order by语法. 一.order by语法 在hiveQL中Order by ...

  10. day2:day1作业 字符编码

    1,使用while循环输出1,2,3,4,5,6,8,9 # 使用while循环输出1,2,3,4,5,6,8,9 num = 1 while num <= 10: if num != 7: p ...