Python 字符编码-文件处理
.read #读取所有内容,光标移动到文件末尾
.readable #判断文件是否可读
.readline #读取一行内容,光标移动到第二行首部
.readlines #读取每一行内容,存放于列表中
.write #针对文本模式的写,需要自己写换行符
.writable #判断文件是否可写
.writelines #向文件中写入一序列的字符串
.close #关闭打开的文件
encoding='' 用哪个编码打开
.encode #编码
.decode #解码 上节课复习:
1.集合类型:
两大用途:关系运算+去重
三个注意点:
1.集合内元素必须为不可变类型
2.集合内元素不能重复
3.集合内元素无序 去重局限性:
1.被去重的对象包含的多个值必须都为不可变类型
2.去重的结果为集合,无法保证原来的顺序 1.什么是字符编码
字符-----编码(字符编码表)------->二进制 ACSII: 只能表示英文字符,用1bytes对应一个英文字符
内存:ACSII
硬盘:ACSII
GBK:可以表示中文和英文字符,用1bytes对应一个英文字符,2bytes对应一个中文字符
内存:GBK
硬盘:GBK Shift-JIS: 日本
内存:Shift-JIS
硬盘:shift-JIS Euc-kr: 韩国
内存:Euc-kr
硬盘:Eus-kr Unicode: 可以对应万国字符,统一用2bytes对应一个字符
内存:Unicode
硬盘:Unicode 两大特点:
1,可以兼容万国字符
2.与万国字符编码都有一种数字与数字的对应关系
GBK数字------解码decode-------->Unicode数字
强调:此时计算机只能使用Unicode与字符的对应关系 utf-8:
3Bytes对应一个中文字符
2Bytes对应一个英文字符
保证不乱码的关键:
1.字符当初以什么编码存放的,就应该以什么编码取解码 Python test.py
在Python2中:
1.解释器默认使用的编码是ASCII
2.有两种字符串类型:
str:x="上" 文件头指定的编码格式的二进制
Unicode:x=u"上" 存成Unicode格式的二进制
ps:
在Python3中:
1.(执行Python程序的第二个阶段)解释器在将test.py当普通的文本文件读入内存时默认使用的编码是UTF-8
2.(执行Python程序的第三个阶段,开始识别语法),会将字符类型的值开辟一个内存空间存入Unicode格式的二进制
即Python3中的str类型是Unicode编码的二进制 3.字符串类型 .encode 编码
.decode 解码 文件头:
在文件首行写上: coding:utf-8
就是在告诉Python下面的代码用UTF8读取 2文件处理:
1.什么是文件
文件是操作系统为用户/应用程序提供的一种操作硬盘的抽象单位
2.为何要用文件:
用户/应用程序对文件的读写操作会由操作系统转换成具体的硬盘操作
所以用户/应用程序可以通过简单的读\写文件来间接的控制复杂的硬盘的存取操作
实现将内存中的数据永久保存到硬盘中
3.如何用文件
open 是向操作系统发送请求,要求操作系统打开文件
open(r'文件路径') 路径前都要加r
f = open(r'a.txt',encoding='utf-8') 相对路径
print(f.read()) f的值是一个文件对象
f.close() 向操作系统发送请求,要求操作系统关闭打开的文件
强调:一定要在程序结束前关闭打开的文件 上下文管理 with
with open(r'a.txt',encoding='utf-8') as f:
print(f.read())
操作完打开文件后不用再去写关闭文件指令,with会自动帮你管理 open 打开, 打开文件,拿到一个文件对象,文件对象就相当于一个遥控器,可以向操作系统发送指令
read 读取 读写文件,向操作系统发送读写文件指令
encoding='' 用哪个编码打开
.close 关闭 关闭文件,回收操作系统的资源
with 上下文管理
mode 模式 4.文件的打开模式
r: 只读模式(默认的)
1.当文件不存在时,会报错
2.当文件存在时,文件指针指向文件的开头
w: 只写模式
1.当文件不存在时,新建一个空文档
2.当文件存在时,清空文件内容,文件指针跑到文件的开头
a: 值追加写模式
1.当文件不存在时,新建一个空文档
2.当文件存在时,文件指针指向文件末尾
5.控制读写文件单位的方式(必须与r\w\a连用)
t: 文本模式(默认的),一定要指定encoding参数
优点: 操作系统会将硬盘中二进制数字解码成Unicode然后返回
强调: 只针对文本文件有效
b: 二进制模式(一定不能指定encoding参数)
优点: 没有局限性
Python 字符编码-文件处理的更多相关文章
- python字符编码-文件操作
字符编码 字符编码历史及发展 为什么有字符编码 ''' 原因:人们想要将数据存入计算机 计算机的能存储的信息都是二进制的数据 内存是基于电工作的,而电信号只有高低频两种,就用01来表示高低电频,所以计 ...
- Python字符编码讲解
声明:本文参考 Python字符编码详解 在计算机中我们不管用什么语言和程序,最终数据在计算机中的都是字节码(也就是01形式)的形式存在的,如果 计算机直接把字节码显示在屏幕上,很明显一般人看不懂字节 ...
- 深入理解Python字符编码--转
http://blog.51cto.com/9478652/2057896 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError ...
- 深入理解Python字符编码
不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...
- Python字符编码详解,str,bytes
什么是明文 “明文”是可以是文本,音乐,可以编码成mp3文件.明文可以是图像的,可以编码为gif.png或jpg文件.明文是电影的,可以编码成wmv文件.不一而足. 什么是编码?把明文变成计算机语言 ...
- Python字符编码补充
字符编码: Python字符编码贯穿Python学习的始终,现在应用的是Python2中字符编码的问题是很多的. 这次是要彻底解决Python字符编码的问题!!! 1 字符编码的发展过程: 1 .AS ...
- python --- 字符编码学习小结(二)
距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...
- 转1:Python字符编码详解
Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MB ...
- 转2:Python字符编码详解
1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...
随机推荐
- strcpy(转载)
转自:http://www.kuqin.com/clib/string/strcpy.html 原型:extern char *strcpy(char *dest,char *src); 用法:#in ...
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(四)图书信息的增删改查
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
- bzoj 2157: 旅游【树链剖分+线段树】
裸的树链剖分+线段树 但是要注意一个地方--我WA了好几次才发现取完相反数之后max值和min值是要交换的-- #include<iostream> #include<cstdio& ...
- poj 2987 Firing【最大权闭合子图+玄学计数 || BFS】
玄学计数 LYY Orz 第一次见这种神奇的计数方式,乍一看非常不靠谱但是仔细想想还卡不掉 就是把在建图的时候把正权变成w*10000-1,负权变成w*10000+1,跑最大权闭合子图.后面的1作用是 ...
- 洛谷P3250 [HNOI2016]网络(整体二分+树状数组+树剖)
传送门 据说正解是树剖套堆???然而代码看着稍微有那么一点点长…… 考虑一下整体二分,设当前二分到的答案为$mid$,如果所有大于$mid$的边都经过当前点$x$,那么此时$x$的答案必定小于等于$m ...
- Luogu P1462 通往奥格瑞玛的道路【二分/最短路】
题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...
- mysqlshow(数据库对象查看工具)
mysqlshow是mysql客户端对象查看工具,可以用来查看数据库.数据库中的表.表中的列.索引等. 1.mysqlshow命令的语法 shell > mysqlshow [options] ...
- 213 House Robber II 打家劫舍 II
注意事项: 这是 打家劫舍 的延伸.在上次盗窃完一条街道之后,窃贼又转到了一个新的地方,这样他就不会引起太多注意.这一次,这个地方的所有房屋都围成一圈.这意味着第一个房子是最后一个是紧挨着的.同时,这 ...
- Codeforces Round #230 (Div. 1)
A: 题意:给你一个半径为n的圆 求最少阻塞多少个点 才能使所以圆内及圆上的点 都不与外边的点相连 相连是距离为1 只算整数点 这题定住x,y依次递减 判断一下是否4-connect 这个意思就是 ...
- 来自AJPFX的二分法查找
package com.heima.array; public class Demo2_Array { /** * * A:案例演示 * ...