本文目录:

一、字符编码

二、文件处理

一、字符编码

储备知识点

1. 计算机系统分为三层:

  应用程序
操作系统
计算机硬件

2. 运行python程序的三个步骤

  1. 先启动python解释器
2. 再将python文件当作普通的文本文件读入内存
3. 解释执行读入内存的代码,开始识别语法

字符编码

1. 什么是字符编码

        字符编码表: 人类的字符<------------>数字

        1Bytes=8bit
1B=8b 1字节等于8个二进制位 ASCII码:只能识别英文字符,1英文字符=8bit
用8个二进制bit(比特位)位表示一个英文字符 GBK:能识别汉字与英文,1汉字=16bit,1英文字符=8bit
Shift_JIS
Euc-kr unicode:能够识别万国字符,1字符=2Bytes=16bit
两大特点:
1. 能够兼容万国字符
2. 与各个国家的字符编码都有映射关系
utf-8:是unicode的转换格式,1个英文字符=1Bytes 1汉字=3Bytes
重点理论:
1 编码与解码:
字符---编码-->unicode的二进制-------编码----->GBK的二进制
GBK的二进制-----解码-->unicode的二进制----解码->字符 2\ 解决乱码问题的核心法则:
字符用什么编码格式编码的,就应该用什么编码格式进行解码 3\ python解释器默认的字符编码
python2:ASCII
python3:UTF-8 通过文件头可以修改python解释器默认使用的字符编码
在文件首行写:#coding:文件当初存的时候用的字符编码 针对python2解释器中定义字符串应该:
x=u"上"
对于python3解释即便是x="上"不加u前缀也是存成unicode 在python3中
x='上' # '上'存成了uncidoe unicode--------encode----------->gbk
res=x.encode('gbk') #res是gbk格式的二进制,称之为bytes类型 gbk(bytes类型)-------decode---------->unicode
y=res.decode('gbk') #y就是unicode
 关于字符编码的操作:
1. 编写python文件,首行应该加文件头:#coding:文件存时用的编码
2. 用python2写程序,定义字符串应该加前缀u,如x=u'上'
3. python3中的字符串都是unicode编码的,python3的字符串encode之后可以得到bytes类型

2. 为何字符要编码

人类与计算机打交道用的都是人类的字符,而计算机无法识别人类的字符,只能识别二进制,所以必须将人类的字符编码成计算机能识别的二进制数字.

二、文件处理

什么是文件

文件是操作系统提供给用户/应用程序的一种虚拟单位,该虚拟单位直接映射的是硬盘空间

为何要处理文件

 用户/应用程序直接操作文件(读/写)就被操作系统转换成具体的硬盘操作,从而实现
用户/应用程序将内存中的数据永久保存到硬盘中

如何用文件

# 文件处理的三个步骤
# f=open(r'c.txt',mode='r',encoding='utf-8') # 文件对象(应用程序的内存资源)------》操作系统打开的文件(操作系统的内存资源)
# # print(f)
# data=f.read()
# f.close() # 向操作系统发送信号,让操作系统关闭打开的文件,从而回收操作系统的资源 # 上下文管理
# with open(r'c.txt',mode='r',encoding='utf-8') as f,open(r'b.txt',mode='r',encoding='utf-8') as f1:
# 读写文件的操作
# pass # 文件的打开模式:r(默认的) w a
# 操作文件内容的模式:
# t(默认的):操作文件内容都是以字符串为单位,会自动帮我们解码,必须指定encoding参数
# b: 操作文件内容都是以Bytes(二进制)为单位,硬盘中存的是什么就取出什么,一定不能指定encoding参数
# 总结:t模式只能用于文件本文件,而b模式可以用于任意文件 # r模式:只读模式,在文件不存在时则报错,如果文件存在文件指针跳到文件的开头
# with open(r'c.txt',mode='rt',encoding='utf-8') as f:
# print(f.read())
# print(f.readable())
# print(f.writable())
# f.write('hello') # 只能读 # data=f.read()
# print(data,type(data)) # with open(r'c.txt',mode='rb') as f:
# data=f.read()
# # print(data,type(data))
# res=data.decode('utf-8')
# print(res) # with open(r'c.txt',mode='rt',encoding='utf-8') as f:
# # line=f.readline()
# # print(line,end='')
# # line1=f.readline()
# # print(line1,end='')
# # line2 = f.readline()
# # print(line2,end='')
#
# lines=f.readlines()
# print(lines)
# with open(r'c.txt',mode='rt',encoding='utf-8') as f:
# line=f.readline()
# print(line,end='') # 循环读文件内容的方法:
# with open(r'c.txt',mode='rt',encoding='utf-8') as f:
# for line in f:
# print(line,end='')

python文件操作:字符编码与文件处理的更多相关文章

  1. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  2. Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作

    本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...

  3. Python基础之字符编码,文件操作流与函数

    一.字符编码 1.字符编码的发展史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit ...

  4. python 基础之字符编码和文件处理

    一.字符编码 (1)计算机基础知识 (2)python 解释器执行py文件的原理 <1>python 解释器启动 <2>python解释器相当于一个文本编辑器,打开txt.py ...

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

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

  6. Python自动化开发 - 字符编码、文件和集合

    本节内容 字符编码 文件操作 集合 一.字符编码 1.编码 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.解决思路:数字与符号建立一对一映射,用不同数字表示不同符号. ASCI ...

  7. Python入门基础--字符编码与文件处理

    字符编码 文本编辑器存取文件的原理 #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失 #2.要想永久保存,需要点击保存按钮:编辑器把内 ...

  8. python数据类型、字符编码、文件处理

    介绍: 1.什么是数据? 例:x=10,10是我们要存储的数据 2.为何数据要分不同的类型? 数据是用来表示状态的,不同的状态用不同的类型的数据去表示 1.数据类型 1.数字(整形,长整形,浮点型,复 ...

  9. 二、python数据类型、字符编码、文件处理

    一. 前言 1. 什么是数据: x = 10,10就是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的, 不同的状态就应该用不同类型的数据去表示 3. 数据类型 数字(整型.长整型 ...

  10. python数据类型、字符编码、文件处理-练习

    练习-字符串 # 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分) name = " aleX" # ) 移除 name 变量对应的值两边的空格,并输出处理 ...

随机推荐

  1. python基础--字符串、元组

    字符串方法 注:字符串和元组一样都是不可变的,以下函数不会改变原来字符串的值,可以将其赋给一个新的变量 st='a b c d,f,g' st_list=st.split()#字符串分割,参数不写,按 ...

  2. 微信小程序文字超过行后隐藏并且显示省略号

    在小程序开发过程中,经常会遇到一些数据无法在text中完全展示,所以会使用到隐藏相关文字,并在后方加上省略号(...). 只需要在对应的text中设置下面的css就可以了. overflow:hidd ...

  3. 机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...

  4. 用户ID与权限

    目录 用户ID与权限 文件系统查看 权限ID概览 设置位 黏着位 UMASK chmod与chown 代码附录 chmod title: 用户ID与权限 date: 2019/11/25 21:20: ...

  5. react新特性hook

    一.hook示例.   import React, { useState } from 'react'; function Example() { // 声明一个叫 “count” 的 state 变 ...

  6. VS2013:error C1069: 无法读取编译器命令行

    前一阵搞python和matlab,没用VS 2013,今天打开一个C++程序想跑一跑,突然蹦出这么个错误,然后发现电脑上所有的程序都会这样了. 后来发现是TMP/TEMP环境变量路径有空格的问题,更 ...

  7. sleep(0) 的作用

    思考下面这两个问题: 假设现在是 2019-5-18 12:00:00.00,如果我调用一下 Thread.Sleep(1000) ,在 2019-5-18 12:00:01.00 的时候,这个线程会 ...

  8. Java Mysql--链接数据库,数据库字段比较

    连接库操作: package com.qa.xxx; import org.springframework.stereotype.Component; import java.lang.reflect ...

  9. 2019南昌网络赛  I. Yukino With Subinterval 树状数组套线段树

    I. Yukino With Subinterval 题目链接: Problem Descripe Yukino has an array \(a_1, a_2 \cdots a_n\). As a ...

  10. 【模板】C++高精度加法

    所谓高精度加法就是对两个和可能会超过long long数据范围的数进行加法运算.这种情况下,显然不能使用常规的方法进行运算. 那么,不妨考虑一下人在纸上是如何进行加法运算的.当人进行加法运算时,通常会 ...