首页 > 其他 > 详细

字符编码 文件处理

时间:2019-07-05 20:12:59      阅读:97      评论:0      收藏:0      [点我收藏+]

1.运行程序的三个核心硬件

cpu 内存 硬盘

任何一个程序要想运算,必选先有硬盘加载到内存,然后cpu去内存取指执行
运行着的应用程序产生的数据 必先存在内存

2.python解释器运行一个py文件(xxx.py)步骤
    1.将python解释器的代码由硬盘读到内存
    2.将xxx.py以普通文本文件形式读到内存
    3.python读取文件内容 识别python语法  执行相应操作
    ps:普通的文本编辑器与python解释器前两步都是一样的

 

字符编码

字符编码针对的是文字,字符编码只跟文本文件有关

文本编辑器的输入和输出是两个过程,人在操作计算机的时候将字符通过字符编码表转化为二进制数

字符编码表示字符与数字之间的关系

★ASCII码表

用八位二进制数表示一个英文字符,所有英文字符=符号差不多125

★GBK

用2Bytes表示一个中文字符,还是用1Bytes表示一个英文字符

★万国符

统一用两字节表示所有的字符

缺点:浪费存储空间  、程序运行效率降低

当内存中的unicode编码格式数据存到硬盘的时候,会按照utf-8编码

将unicode的英文字符由原来的2Bytes变为1Bytes

将unicode的中文字符由原来的2Bytes变为3Bytes

 

现在的计算机

    内存都是unicode

    硬盘都是utf-8

unicode的两个特点

   1.用户在输入任何字符的时候,都能兼容万国符

   2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系

 

数据由内存保存到硬盘

内存中的unicode格式二进制数         编码           硬盘中的utf-8格式的二进制数据

数据由硬盘读到内存

硬盘中的utf-8格式的二进制数据        解码          内存中的unicode中的二进制数据

保证不乱码在于文本文件以什么编码编就以什么编码解

python2

将py文件按照文本文件读入解释器中默认使用ASCII码

python3
将py文件按照文本文件读入解释器中默认使用utf-8

文件头

# coding:utf-8   

1.因为所有的编码都支持英文字符,所以文件头才能够正常生效

基于Python解释器开发的软件,只要是中文,前面都需要加一个u

python2不指定文件头,默认ASCII存储数据,如果指定文件头,就按照文件头的编码格式存储数据

python3中字符串默认是unicode编码的二进制数

pycharm终端用的utf-8格式

windows终端采用的是gbk

 

什么是文件?
    操作系统提供给用户操作复杂硬件(硬盘)的简易的接口
为什么操作文件
    人或者应用程序需要永久的保存数据
如何用
    f = open()
    f.read()
    f.close()

# r取消转义

with open(r‘D:\python_workspace\day7\a‘,encoding = ‘utf-8‘) as f,\
open(r‘D:\python_workspace\day7\b‘,encoding = ‘utf-8‘) as f1: # 应用程序想要操作计算机硬件,必须通过操作系统来简便的操作,f是文件对象,在应用程序上
print(f)
print(f.read())
print(f1)
print(f1.read())
文件打开的模式
r 只读模式
w 只写模式
a 追加写模式
操作文本单位的方式
t 文本文件 t在使用的时候需要指定encoding参数,如果不指定就用操作系统默认编码
b 二进制 一定不能指定encoding参数

# mode参数 可以不写,默认rt,t不写默认是t
with open(r‘D:\python_workspace\day7\a‘,mode = ‘r‘,encoding = ‘utf-8‘) as f:
print(f.readable()) # 是否可读
print(f.writable()) # 是否可写
print(f.read()) # 一次性将文件内容全部读出
r模式在打开文件的时候,如果文件不存在,直接报错
文件路径可以写相对路径,该文件必须与执行文件在同一层文件下
with open(ra,r,encoding=utf-8) as f1:  #mode关键字可以不写
    print(f1.readable())  # 是否可读
    print(f1.writable())  # 是否可写
    print(">>>1:")
    print(f1.read())  # 一次性将文件内容全部读出
    print(>>>2:)
print(f1.read()) # 读完一次之后,文件的光标已经在文件的末尾了,在读就没有内容了
print(f.readlines()) # 返回的是一个列表,列表中的元素就对应的是一行行的内容
print(f.readline()) # 只读取文件的一行

w模式:文件不存在的情况,会自动创建该文件

当文件存在的情况,会先清空文件内容在写入

with open(rD:\python_workspace\day7\a, mode=w, encoding=utf-8) as f:
    print(f.readable())  # 判断可读
    print(f.writable())  #判断可写
    f.write(不不不,我没有翻车\n)

a模式

1.当文件不存在的情况下,自动创建该文件

2.当文件存在的情况下,不清空文件内容,文件的光标会移动到文件的最后

with open(rD:\python_workspace\day7\a, mode=a, encoding=utf-8) as f:
    print(f.readable())
    print(f.writable())
    f.write(哈哈哈哈\n)

 











字符编码 文件处理

原文:https://www.cnblogs.com/zrh-960906/p/11140431.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!