打开文件的语法

f=open("test.txt",encoding=:"utf-8") #给系统发送一个指令,让操作系统去打开文件

使用上面的方法打开文件的方式,一定要记得手动的close()文件,否则会一直占用系统的资源

f.close()

打开文件的语法2..在with代码类的执行完毕退出后,会自动调用close(),这是python解释器,为我们提供的方法的方式

with open("test.txt",encoding="utf-8") as f:
  data= f.read()

读取文件

open的三个参数的简介:
参数1:需要打开的文件的路径  可以是绝对路径 也可以是相对路径

参数2: mode 打开文件的模式

参数3encoding 在我的理解,就是读取的文件 是以什么编码存入硬盘的,这里就写什么编码

中文的windows默认是gbk编码,linux默认是utf-8编码

f=open("test.txt","r",encoding="utf-8")

data=f.read()

read()函数可以指定读取文件的大小,如果打开方式是rt模式,则指定的大小为读取的字符数量

        如果打开方式是rb模式,则指定的大小为读取的字节数

  :函数有默认值,如果不给定函数一个值,则使用默认值,( -1 )读取文件的全部内容到内容中

f.readable()  #判断 该返回的文件描述符是否可读

f.writeable() #判断, 该返回的文件描述符是否可写

f.readline() #只会读取一行,如果需要文件的全部内容,需要循环读取文件的内容

f.readlines()  #读取文件的所有内容,放到一个列表当中

写入文件

with oepn("test.txt","w",encoding="utf-8") as f:

  f.write(msg)  #将msg写入文件当中

"w"  模式打开的时候,先将文件清空,然后才会将文件写入

对非文本文件的读写

在操作非文本文件是,必须明确指定模式为字节模块

b  用来指定为字节模式

注意:

b必须与 r\w模式连用, rb(readbytes)\wb

当模式为字节模式时 不能指定encoding参数

默认情况下是读写文本模式, 也就是t模式,需要将r\w连用

t 模式因为是文本读取模式, 所以python解释器会自动进行编码和解码但是b模式不会

#在b模式只能写入字节

with open("test.txt","wb") as f:

  f.write("abs".encode("utf-8"))

  f.write("你好".encode("utf-8"))

因为b模式只能写入字节,所以再将字符串存入非文本文件的时候,必须将字符串编码成字节模式

a:追加模式,文件指针直接跳到文件的末尾,不会清空文件的内容然后将内容写入

+表示可读可写模式,必须和r\w\a联用,不能单独使用"+"

w+:清空源文件,如果不存在则创建

r+:文件如果不存在,则报错

a+:如果不存在则创建,光标移动到文件的末尾,

文件编码的终极奥义:

就是读取文件的编码必须和文件存入硬盘时的编码相同

造成python2中文乱码的原因:

因为在Python2的解释器的原因,那个时候没有unicode,所以代码在读入内存的时候,头文件采取的什么编码方式

解释器在将python的代码当做普通的文本内容读入内存的时候就采用什么编码方式,当解释器在解释python代码的时候

则直接将 文本 的二进制内容,直接放入内存里面,所以再往外输出的时候,如果默认的编码方式,与python代码存入内存

时候的代码不相同,则就会乱码,所以再定义变量的 时候在前面加一个u,则编码的时候采用unicode编码方式(万国码),所以

在读取的时候就不会报错

encoding()  编码

decoding()  解码

day 08 字符编码和文件的读写操作的更多相关文章

  1. 使用字符流(Writer、Reader)完成对文件的读写操作

    字符流 字符输出流:Writer,对文件的操作使用子类FileWriter 字符输入流:Reader,对文件的操作使用子类FileReader 每次操作的是一个字符 文件字符操作流会自带缓存,默认大小 ...

  2. python基础(三)----字符编码以及文件处理

      字符编码与文件处理 一.字符编码 由字符翻译成二进制数字的过程   字符--------(翻译过程)------->数字   这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之 ...

  3. Python-字典、集合、字符编码、文件操作整理-Day3

    1.字典 1.1.为什么有字典: 有个需求,存所有人的信息 这时候列表就不能轻易的表示完全names = ['stone','liang'] 1.2.元组: 定义符号()t = (1,2,3)tupl ...

  4. 07-Python入门学习-字符编码与文件处理

    字符编码 人操作计算机使用人类认识的字符,而计算机存放都是二进制数字所以人在往计算机里输入内容的时候,必然发生: 人类的字符------(字符编码表)-------->数字 比如我输入一个‘上’ ...

  5. python学习day9 字符编码和文件处理

    1.字符编码 x='上' #unicode的二进制--------->编码-------->gbk格式的二进制 res=x.encode('gbk') #bytes 字节类型 print( ...

  6. Python基础(四)--数据类型、字符编码、文件处理

    一.数据类型 1. 数据类型 数字(整形,长整形,浮点型,复数) 字符串 字节串(字节bytes类型) 列表 元组 字典 集合 2. 按照以下几个点展开数据类型的学习 #=============== ...

  7. python文件操作:字符编码与文件处理

    一.字符编码 二.文件处理 一.字符编码 储备知识点: 1. 计算机系统分为三层: 应用程序 操作系统 计算机硬件 2. 运行python程序的三个步骤 1. 先启动python解释器 2. 再将py ...

  8. python基础知识5---数据类型、字符编码、文件处理

    阅读目录 一 引子 二 数字 三 字符串 四 列表 五 元组 六 字典 七 集合 八 数据类型总结 九 运算符 十 字符编码 十一 文件处理 十二 作业   一 引子 1 什么是数据? x=10,10 ...

  9. Python之字符编码与文件操作

    目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二 ...

随机推荐

  1. K8S学习笔记之kubernetes 日志架构

    0x00 概述 应用程序和系统日志可以帮助我们了解集群内部的运行情况,日志对于我们调试问题和监视集群情况也是非常有用的.而且大部分的应用都会有日志记录,对于传统的应用大部分都会写入到本地的日志文件之中 ...

  2. Vue基础进阶 之 过渡效果

    进入/离开过渡效果:Vue在插入.更新或移除DOM时,可以设置一些动画效果: 如何使用过渡效果:利用<transition></transition>组件将需要应用的过渡效果的 ...

  3. JavaScript 示例

    JavaScript 示例 <html lang="en"> <head> <meta charset="UTF-8"> & ...

  4. Redis 分布式缓存 Java 框架

    为什么要在 Java 分布式应用程序中使用缓存? 在提高应用程序速度和性能上,每一毫秒都很重要.根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有 53% 的手机用户会离开. 缓存 ...

  5. PHP实现简单发红包(随机分配,平均分配)

    最近碰到一些情况,把思路重新整理了一下,敲出代码.记下来,以后可以借鉴,进一步优化等. 大致的思路:红包主要分两种,一种是平均分配,一种是随机分配. 1.平均分配 平均分配相对好理解,只要把钱平均分给 ...

  6. D2欧拉路,拓扑排序,和差分约束

    第一题:太鼓达人:BZOJ3033 题意:给出k,求一个最长的M位01串,使其从每一个位置向后走k个得到 的M个k位01串互不相同(最后一个和第一个相邻,即是一个环).输出 字典序最小的答案. 2 ≤ ...

  7. COCO数据集格式互换

    poly->compacted RLE:     seg=np.array([312.29, 562.89, 402.25, 511.49, 400.96, 425.38, 398.39, 37 ...

  8. FJUT3703 这还是一道数论题(二分 + hash + manacher 或者 STL + hash 或者 后缀数组 + hash)题解

    Problem Description 最后来个字符串签个到吧,这题其实并不难,所需的算法比较基础,甚至你们最近还上过课. 为了降低难度,免得所有人爆零.这里给几个提示的关键字 :字符串,回文,二分, ...

  9. 【2.0】SpringBoot连接MySql 8.0的url设置

    jdbc:mysql://localhost:3306/enterprise?useUnicode=true&amp&useSSL=false&amp&characte ...

  10. MyBatis进阶(二)

    MyBatis之动态SQL 动态SQL之foreach 有时SQL语句where条件是在一个集合或者数组里,需要使用in关键字,这时可以使用foreach动态SQL语句,例如: select * fr ...