首页 > 其他分享 >字符编码+文件

字符编码+文件

时间:2023-07-03 10:22:46浏览次数:34  
标签:f1 编码 utf8 模式 文件 字符 open

字符编码简介

字符编码只针对文本文件(音频、视频、图片都不可以)

一开始是美国人发明的数字与英文的对应关系,叫ASCII码     (1bytes也就是8bit表示英文)

记忆:A-Z   对应  65-90        a-z 对应  97-120

后面中国使用计算机,发明GBK码,韩国发明Euc_kr,日本发明shift_JIS,但是不同码表翻译会出现乱码

最后天下一统,使用unicode万国码  (所有的字符都是2bytes起步存储     会浪费空间和IO时间)

                                 utf8:万国码的转换版本,内存使用unicode,硬盘使用utf8

字符编码的实际应用

编码(将人类能够读懂的字符编码成计算机能够直接读懂的字符) encode

解码(将计算机能够直接读懂的字符解码成人类能够读懂的字符)     decode

s1 = '事已至此 何不一搏'
#编码    encode
print(s1.encode('gbk'))#  括号里面是编码的类型
#b'\xca\xc2\xd2\xd1\xd6\xc1\xb4\xcb \xba\xce\xb2\xbb\xd2\xbb\xb2\xab'

   """
    字符串前面如果加了字母b 表示该数据类型为 bytes类型
        bytes类型可以看成是二进制(无特殊含义)
    """



# 解码    decode

res =b'\xca\xc2\xd2\xd1\xd6\xc1\xb4\xcb \xba\xce\xb2\xbb\xd2\xbb\xb2\xab'
print(res.decode('gbk'))

python解释器层面(了解即可)
python2解释器默认的编码是ASCII码(如果在python2中直接写中文看不懂)
1.文件头:必须写在文件的最上方 告诉解释器使用指定的编码
# coding:utf8
# -*- coding:utf8 -*- 美化写法
2.字符前缀:在使用python2解释器的环境下定义字符串习惯在前面加u
name = u'你好啊'
python3解释器默认的编码是utf8(如果是python3则不用管)

文件操作简介(文件:操作系统暴露给用户可以直接操作硬盘的快捷方式)

打开、编辑、保存、关闭文件

方法一:(不常用)

f1 = open()  #如果没有
f1.close()

open(r'a.txt')  # 相对路径  只适用于同一层级的文件
open(r'D:\py1\day09\a.txt')  # 绝对路径(以后写路径为了防止特殊符号 直接加r)
用方法一打开,需要自己输入close进行关闭

方法二:(推荐使用)

with open() as f:
这种相当于f = open(),进行了赋值,后面用完不需要手动关闭,直接with内部给变成close关闭

文件的读写模式

r     read(只读不写)  

w      write(只写不读)

a       append(只在尾部追加模式)  

 r模式
#路径不存在:直接报错
with open(r'b.txt', 'r', encoding='utf8') as f1:   #(路径地址,模式,使用的对应码)
     # pass  (推荐)补全语法结构 本身没有任何功能
     # ...  (不推荐)补全语法结构 本身没有任何功能

 路径存在:正常打开文件并等待内容读取
with open(r'a.txt', 'r', encoding='utf8') as f1:
    # print(f1.read())  # 一次性读取文件内所有的内容
    f1.write('python是最牛逼的语言!!!')  # 报错  只读不写
"""
 w模式
 路径不存在:自动创建文件
with open(r'b.txt', 'w', encoding='utf8') as f1:

 路径存在:先清空文件内容 之后再写入数据  #使用时候小心,否则把之前的文档都清除了
with open(r'a.txt', 'w', encoding='utf8') as f1:
    f1.write('你们是我见过的最优秀一批学生1\n')  # 写入文件内容
    f1.write('你们是我见过的最优秀一批学生2\r')  # 写入文件内容
    f1.write('你们是我见过的最优秀一批学生3\n')  # 写入文件内容
    print(f1.read())  #不可读
"""
换行  最早的时候:\r\n
为了节省空间支持一个字符 根据操作系统的不同可能有所区别
    \n 、 \r
"""
a模式(append)
路径不存在:自动创建文件
 with open(r'c.txt', 'a', encoding='utf8') as f1:

路径存在:不会清空文件内容 而是在文件末尾等待新内容的添加
with open(r'a.txt', 'a', encoding='utf8') as f1:
     f1.write('哈哈哈哈或或或或或')  #可以在尾部添加
     print(f1.read())  #不可读,报错

 文件的操作模式

 t模式  

文本模式   是默认的模式

     r     rt

     w    wt

     a     at

1.该模式只能操作文本文件
2.该模式必须要指定encoding参数
3.该模式读写都是以字符串为最小单位

b模式

   二进制模式  可以操作任意类型文件

     rb 不能省略b
    wb 不能省略b
     ab 不能省略b
1.该模式可以操作任意类型的文件
2.该模式不需要指定encoding参数
3.该模式读写都是以bytes类型为最小单位

文件内置方法

read()  # 一次性读取文件内容
    1.执行完之后光标在文件末尾 继续读取没有内容
    2.当文件内容特别大的时候 容易造成内存溢出(满了)
readline()  # 一次只读一行内容
readlines()  # 结果是一个列表 里面的各个元素是文件的一行行内容
readable()  # 判断当前文件是否可读
支持for循环  # 一行行读取文件内容(推荐使用)  内存中同一时刻只会有一行内容
write()  # 写入文件内容(字符串或者bytes类型)
writelines()  # 可以将列表中多个元素写入文件
writable()  # 判断文件是否可写
flush()  # 相当于主动按了ctrl+s(保存) 

 

标签:f1,编码,utf8,模式,文件,字符,open
From: https://www.cnblogs.com/Milk1/p/17505142.html

相关文章

  • MDK 文件编码转换 utf8
    由于本人偏向于utf8编码的文件,所以编辑器都设置的utf8编码,这就导致了gb2312的编码文件打开后会乱码。于是在网上找到了转换编码的工具。以下也是从网上找来的,代码也比较简单。需要安装python或者path路径里面包含python路径,同时还需要pipinstallchardetimportsysimportchar......
  • dmPython连接达梦数据库,查询含有特殊字符报错'gbk' codec can't decode byte 0xaa in
     解决方法,可以在应用连接字符串url连接属性加上local_code=1指定客户端字符编码方式。#local_code=1表示执行客户端的本地编码是UTF-8,否则默认是GBKdm_conn=dmPython.connect(user=dm_user,password=dm_password,server='localhost',port=5236,local_code=1) 参考网......
  • 第三天(SpringBoot项目部署,简单HelloWorld,打包,yaml,注入配置文件,多环境配置)
    老师的文档里大部分都写得很清楚,此处只做部分补充此处JDK应选1.8版本的,版本太高有几率出错添加启动web的依赖添加insert+alt快速配置constructorgettersettertostring松散绑定检验矫正依赖添加......
  • LeetCode -- 767. 重构字符串
     设字符串s长度为lens可以重构为相邻字符串不同时有字符串中出现次数最多的字符<(len+1)>>1当满足上述条件时候,我们就能对其进行重构重构法:先放置偶数位置,再放置奇数位置c++classSolution{public:stringreorganizeString(strings){vector<i......
  • Matlab-对wav音频文件AM调制及解调
    1.读取wav音乐文件%读取音频文件filename='jay.wav';[sound_data,fs]=audioread(filename);%9507502x244100sound_data_1=sound_data(:,1);sound_data_1=sound_data_1';%转置sound_data有两列,因为此音乐文件有两个通道,音频采样率为44100;这......
  • Matlab对wav文件做fft分析
    1.代码%指定要读取的.wav文件路径filename='jay.wav';%使用audioread函数读取.wav文件[sound_data,sample_rate]=audioread(filename);sound_data=sound_data(:,1);%计算音频数据的长度sound_length=length(sound_data);%计算FFT的点数%fft_points=......
  • BackUpLogView 系列 - ps1 文件代码及参考
    注意保存为.ps1后缀的文件 $sourceDirectory="C:\FromDIR"$targetLocalDirectory="D:\ToDIR"$btree="数据库"$taskName="HIS"$memo="心电系统"#---btree为一级类目比如数据库taskname为二级类目比如his----memo在详情页展示,显示具体的备注人......
  • 如何在AutoCAD中快速将矢量数据导出到shp、mdb、kml、geojson、gpx文件?
    在AutoCAD中借助GIS4CAD插件能为您提供便捷的矢量数据导出功能,不论是shp、mdb、kml、geojson还是gpx等矢量文件格式都能轻松导出。方法/步骤下载并安装GIS4CAD插件http://www.geosaas.com/download/gis4cad.exe 下载并安装GIS4CAD插件,安装成功后在AutoCAD菜单栏的最后会......
  • linux 中 shell脚本实现提取gff文件中的最长转录本
     001、数据和脚本[root@PC1test2]#lsGCF_001704415.1_ARS1_genomic.gffrecord.sh 002、脚本[root@PC1test2]#catrecord.sh##脚本内容#!/bin/bas##step1:eliminatetheinfluenceofpseudogenegrep-v"^#"GCF_001704415.1_ARS1_genomic.gff|......
  • Mac中VscodeC++万能头文件配置bits/stdc++.h
    /Library/Developer/CommandLineTools/usr/include路径下创建bits文件夹新建stdc++.h头文件,内容如下//C++includesusedforprecompiling-*-C++-*-//Copyright(C)2003-2018FreeSoftwareFoundation,Inc.////ThisfileispartoftheGNUISOC++Library.T......