19-3-8Python中编码的进阶、文件操作初识、深浅copy
编码的进阶
ASCII:英文字母,数字,特殊符号,——> 二进制的对应关系
Str:
1个字符——> 1个字节
Unicode:万国码:世界上所有的文字与二进制的对应关系
1个字符——> 4个字节
Utf-8:至少用8位1个字节表示一个字符。
英文:一个字节
中文:三个字节
Gbk:国标
英文:一个字节
中文:两个字节
以上总结:
i. 不同的编码之间的0101010是不能互相识别的,除ASCII外。
ii. 网络传输,数据存储到磁盘你用的0101010这种二进制,不能使用unicode的编码本去编译。
大背景:python3x版本。
Str:它在内存中的编码方式:unicode
写入文件的内容、传输给别人的数据,一般都是str的形式。所以此处有矛盾点:网络传输,数据存储到磁盘你用的0101010这种二进制,不能使用unicode的编码本去编译。但python3x又需要str形式去操作。对此用以下方法:
利用str发送或传输
(转换,将Unicode编码转化成非Unicode)——>发送、传输
Int
Bool
Str
Bytes:与str几乎一模一样。
List
Dict
Set
Tuple
Str与bytes的区别:
英文:
Str在内存中的编码:Unicode
表现形式:‘taibai’
Bytes在内存中的编码:非Unicode
表现形式b”taibai”
中文:
Str在内存中的编码:非Unicode
表现形式:’中国’
Bytes在内存中的编码:非Unicode
表现形式:b’\a\xcc…..
#终极转换:
Str->str.decode(‘utf-8’)->传输过程->str.encode(‘gbk’)
Decode:编码 encode:解码
文件操作的初识
f=open(‘文件路径’,encoding=’编码方式’,mode=’r’)
print(f.read())
f.close()
出现问题:
- 路径问题:
r”D:\0新建文本文档”, encoding=’编码方式’,mode=’r’
”D:\\0新建文本文档”, encoding=’编码方式’,mode=’r’
- 编码的问题:
编码要与文件存储时的编码保持一致
- 可能隐藏了后缀名
文件的读:
四种模式:
r r+ rb r+b …. r模式下n代表字符 , r模式下n代表字节
每种模式下有5种读取模式
- print(f.read()): 全部读取
- print(f.read(n)):按字符读。
- print(f.readline()):按行读。
- print(f.readlines()):返回一个list 列表的每个元素是源文件的每一行。
- 循环读取:
for line in f:
print(line)
r:直接读取
rb:以字节的形式读取。 带b的一般操作的都是非文字类的文件。
文件的写:
r+:读写模式-先读后写。
w w+ wb w+b
w:没有文件则创建文件并写入内容。如果有文件,先清空原先内容,再写入。 f.write(‘alex’)
wb:先用rb读取别的文件内容,然后把内容赋值给一个变量,最后再把这个变量写入别的文件。
文件的追加:
a ab a+ a+b
a:没有文件,创建文件,写入内容。如有文件,就在原文件内容后面追加内容。
a+:追加并读
其他操作:
f.flush() 强制保存
readable writeable 判断是否可读可写
print(f.readable())
print(f.writeable())
seek tell 调整光标的位置(按字节调整)/获取指针位置
truncate 对原文件进行(按字节从头)截取,必须在可写情况下使用。(seek对truncate不管用)
最常用的方法:read seek tell flush readable writeable
打开文件的第二种方式(省去了写f.close()):
with open(‘文件路径文件名’,encoding=’utf-8’) as f1:
print(f1.read())
优点:1.省去了写f.close();2.一个with语句可以操作多个文件句柄。
with open(‘文件路径文件名’,encoding=’utf-8’) as f1,open(‘文件路径文件名’,encoding=’utf-8’) as f2:
缺点:有时候关闭文件和硬件有关
文件的改:
- 以读的模式打开源文件。
- 以写的模式创建一个新文件。
- 将原文件内容读取出来,按照你的要求更改成新内容,写入新文件。
- 删除原文件。
- 将新文件重命名成原文件。
low版改名:
19-3-8Python中编码的进阶、文件操作初识、深浅copy的更多相关文章
- python基础之 编码进阶,文件操作和深浅copy
1.编码的进阶 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码.即先将其他编码的字符串解码(decode)成unicode,再从unic ...
- python基础 (编码进阶,文件操作和深浅copy)
1.编码的进阶 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码. 即先将其他编码的字符串解码(decode)成unicode,再从uni ...
- day 0308 编码的进阶 文件操作
一.编码的进阶: 在python3以后,字符串和bytes类型彻底分开,字符串以字符为单位进行处理的,bytes类型是以字节为单位处理的. bytes数据类型在所有的操作和使用与字符串方法基本一样,也 ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
- 员工管理系统+字符编码+Python代码文件操作
员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1 debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...
- 孤荷凌寒自学python第三十三天python的文件操作初识
孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...
- day07----字符编码解码、文件操作(1)
字符编码: 什么是字符编码? 字符编码是将人识别的字符转换成计算机能识别的二进制字符(01),转换的规则就是编码表. 人能识别的字符串 与 计算机能识别的二进制字符 两者之间对应关系构成的结构称为 ...
- 字符编码和python文件操作
字符编码和文件操作 目录 字符编码和文件操作 1. 字符编码 1.1 什么是字符编码 1.2 字符编码的发展史 1.2.1 ASCII码 1.2.2 各国编码 1.2.3 Unicode 1.3 字符 ...
- 我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!
我把我写的四种方法代码贴上来吧,照着写没啥问题. 注: <bookstore> <book> <Id>1</Id> <tate>2010-1 ...
随机推荐
- Android沉浸式状态栏
private void initWindows() { Window window = getWindow(); int color = getResources().getColor(androi ...
- linux fack 文件系统修复命令
[简介] fsck命令被用于检查并且试图修复文件系统中的错误.当文件系统发生错误四化,可用fsck指令尝试加以修复. [选项]必要参数 -a 非互交模式,自动修复 -c 检查是否存在有损坏的区块. - ...
- SVN合并时报错:合并跟踪不允许丢失子树Merge tracking not allowed with missing subtrees; try restoring these items
使用的是TortoiseSVN; Merge tracking not allowed with missing subtrees; try restoring these items 下面会有跟着几 ...
- Google论文(1) GFS:Google文件系统 - 思维导图
Google文件系统是一个面向大规模分布式数据密集型应用的可扩展分布式文件系统. 这里的思维导图作为个人的读书笔记. 参考资料: <google系列论文>- GFS
- [mutt] Configure mutt to receive email via IMAP and send via SMTP
“All mail clients suck. This one [mutt] just sucks less.” Michael Elkins, ca. 1995 Actually I have t ...
- Office Online Server 2016 部署和配置
Office Online Server 2016 部署和配置https://wenku.baidu.com/view/65faf8de846a561252d380eb6294dd88d1d23d45 ...
- 在ASP.NET MVC中,使用Bundle来打包压缩js和css(转)
转自:http://www.cnblogs.com/xwgli/p/3296809.html 在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和c ...
- 请问在JAVA编程中什么叫耦合?什么又叫解藕? 悬赏分:0 - 解决时间:2008-3-8 12:55
模块一的实现依赖于模块二,更改模块二后,模块一也得更改,那么二者就有耦合.修改程序,使得更改模块二后,模块一不受影响,那么就叫解藕 请问<java编程思想>中的“完全解藕”如何理解,和实现 ...
- [EffectiveC++]item22:Declare data members private
将成员变量隐藏在函数接口的背后,可以为“所有可能的实现”提供弹性, 假设我们有一个public成员变量,而我们最终取消了它,多少代码可能会被破坏呢?那是一个不可知的大量. protected成员变量就 ...
- Reporting Service编程----访问Web服务
将报表服务器 Web 服务的引用添加到项目中后,下一步是创建 Web 服务代理类的实例. 然后,您可以通过调用代理类中的方法来访问 Web 服务的方法. 当你的应用程序调用这些方法时,代理类生成的代码 ...