read()读出来了之后文件里就从之后开始  光标不知道在哪

编码的进阶:

背景: 

  ASCII:英文字母,数字,特殊符号,------------>二进制的对应关系

     str:

        一个字符 --------------->一个字节

        a:0001 0000    

    Unicode :万国码:世界上所有文字的  

        1个字符------------》4个字节

        a:0001 00000001 00000001 00000001 0000

        中:0001 00000001 00000001 00000001 0000

    因为上面浪费     

    utf-8 : 至少使用一个

      a:一位映射的ASCII

      中:三位

    gbk:国标

      a:映射的ASCII

      中:三位

    1.不同的编码之间的0101011 是不能互相识别的

    2.网络传输,数据存储到磁盘,-------------->   01010101二进制,不能使用unicod的编码本去编译

    (Unicode) 四位 , 浪费的资源太多

    大背景:  python3X  版本

       str:它在  内存中的编码方式:Unicode   涵盖所有的文字

       但是  写入文件的内容,传输给别人的数据, 一般都是str的形式

    矛盾点: 传输 和 使用 。

    解决: 利用str 发送或者传输(转换,将unicodez转换成非U)----------->发送,传输

    int  

    

    bytes 数据类型

Int

Bool

Str

Bytes  数据类型 与str 几乎一模一样  方法全有基本

List

Dict

Set

Tuple

英文:

Str :

在内存中的编码:Unicode

表现形式---à: ‘t’

Bytes:在内存中的编码:非Unicode

表现形式--à:b‘t’

编码:encode () 默认“utf-8”

# str --------> utf-8  bytes
s1 = 'a太白'
# encode 默认 utf-8
b1 = s1.encode()
b1 = s1.encode('utf-8')
print(b1)#b'a\xe5\xa4\xaa\xe7\x99\xbd'
# str --------> gbk bytes
s1 = 'a太白'
b1 = s1.encode('gbk')
print(b1)#b'a\xcc\xab\xb0\xd7'

中文:

Str :

在内存中的编码:Unicode

表现形式---à: ‘t’

Bytes:在内存中的编码:非Unicode

表现形式--à:b‘t’

若只是英文的话可以,但是中文的话表示成16进制

s1 = b'中国'

^

SyntaxError: bytes can only contain ASCII literal characters.

6个

编码:

Str(Unicode) ----->bytes(非Unicode)

S1 = ‘a 太白’

Encode 默认使用 utf-8

B1 = s1.endcode(‘utf-8’)

B1 = s1.endcode(‘gbk’)

 

解码:

Utf-8 bytes ------>str Unicode

B3 =  b'a\xe5\xa4\xaa\xe7\x99\xbd'

S2 = b3.decode(‘utf-8’)

终极转换

Utf-8  bytes   gbk bytes

And gb2312   Utf-16

# 终极转换
# utf-8 bytes --------> gbk bytes
b3 = b'a\xe5\xa4\xaa\xe7\x99\xbd'
# s = b3.decode()
s = b3.decode('utf-8')
print(s)
b4 = s.encode('gbk')
print(b4) #b'a\xcc\xab\xb0\xd7'

对于 他们的英文 映射的英文的话可以

互相转化 ,特殊情况

读文件:(5+5)

 #__author : 'liuyang'
#date : 2019/3/8 0008
f = open('G:\path.txt',encoding='utf-8',mode='r')
print(f.read()) # utf-8 是 读写 无论什么格式 而且 有的不对 无法编码
# f变量:f , f1 ,file , file_hander,fh ,f_h...文件句柄.
'''
open()python的内置函数,python提供的一个功能,
底层调用的是操作系统的调用文件命令,接口
windows : 编码: gbk (默认)(国标) 为什么用种问
(美国用ASCII码)
linux ,mas : 编码是utf-8 .
'''
'''
操作文件的流程:
1,打开文件,产生一个文件句柄
2,对文件句柄进行相应的操作(中间过程多)
3.关闭文件句柄'''
f.close()

5文件的读:(r r+ rb r+b)

  r 操作:r

# read () 全读
f1 = open('r模式' ,encoding='utf-8') # 默认是r模式
print(f1.read())
f1.close() #看他的数据类型
f1 = open('r模式' ,encoding='utf-8') # 默认是r模式
# content= f1.read() # print(content,type(content)) #字符
# f1.close()
读字节:
 # f1 = open('r模式' ,encoding='utf-8') # 默认是r模式
# print(f1.read(3))
# f1.close()

读每行 和多行 列表(字符串存储)

print(f1.readline())
print(f1.readline().strip()) # 有换行符 去strip()
# print(f1.readline())
print(f1.readlines()) #剩余的 ! 前面也是。 返回一个列表()
# 列表的每一个元素 是 字符
f1.close()'''
读大文件的方法:
#  5  循环读取
f1 = open('r模式',encoding='utf-8')
for line in f1:
print(line)
print(line)
# 在内存之中 只出现 一次 然后显示给显示器
# 下一次 释放了
f1.close()
# w w+ wb w+b
# 没有文件 创建文件写入内容 (写了个 w 模式的文件)
f  = open('w模式',encoding='utf-8',mode='w')
f.write('随便写一点')
f.close()
 先清空后写
f.write('abcdefgh')  # 没空格  一直写
f.write('abcdefgh\n')
f.write('abcdefgh')
f.write('abcdefgh')
f.write('abcdefgh\n')
for i in range(3):
f.write('abcdefgh\n')
f.close()

文件的读写与输出  复制 粘贴

# wb
f1 = open('image.jpg',mode='rb')
content = f1.read()
f1.close()# 产生了数据 关不关 不影响
f2 = open('image1.jpg',mode='wb')
f2.write(content)
f2.close()

image.jpg-----------------> image1.jpg

追加:

# a 模式 追加 文件的追加
# a ab a+ a+b
# a 没有文件 ,创建文件,写入内容
f = open('a模式',encoding='utf-8',mode='a')
f.write('')
f.close()# 不close() 一直在内存占着 网站开着 以后一直占用
# 先读后写  和追加的区别是什么  可以写进去但是不显示 
f1 = open('r模式',encoding='utf-8',mode='r+')
print(f1.read())
# f1.seek()
f1.write('1')
f1.close() #

r+   先写后读   先读后写

#  r+ 先读后写  加到最后
# f = open('r模式',encoding='utf-8',mode='r+')
# content = f.read()
# print(content)
# f.write('dsdjal')
# f.close()
# 先写后读   光标  先写 会替换掉
f = open('r模式',encoding='utf-8',mode='r+')
f.write('dlaonanhail')
content = f.read()
print(content)
f.close()
print(f) # 读入的没有写出 还有替换被write 前面的
#第一种 规范代码
# 第二种 把光标放最前面
f1 = open('r模式',encoding='utf-8',mode='r+')
f1.write('111sss1')
# f1.flush()
f1.seek(0)
a = f1.read()
print(a)
f1.close()
# 经常用到的 # r r+ w a # 网络 :rb wb

文件描述符 , 强制保存
f1 = open('r模式',encoding='utf-8') # 默认是读操作
# print(f1.read())
print(f1.fileno()) # 文件描述符
f1.close()
f2 = open('其他操作方法',encoding='utf-8',mode='w')
f2.write('aldjlajll')
# f1.flush()# 强制保存
f1.close()

writeable readable

f3 = open('r模式',encoding='utf-8') # 默认是读操作
print(f3.readable())
f3.close()
# readable writeable 判断文件句柄是否可读 可写
if f3.writable():
f3.write('')
f3.close()

seek 的光标 不改变 tr 的截取  截取从头开始 到 字节 处

#  网络编程 : FTP的作业,断电续传的功能
# seek tell 断了之后 获取光标的位置 下次下的时候在此调整到这 f1 = open('r模式',encoding='utf-8') # 默认是读操作
f1.seek(9) # 默认字节 之后
print(f1.read())
print(f1.tell())# 获取光标的位置
f1.close()

truncate

f1 = open('w模式',encoding='utf-8',mode='w') # 默认是读操作
f1.write('wwajfaldjakgjdlajglajdg')
print(f1)
f1.close()
# truncate # 对源文件进行截取
# 它 必须在可写的情况下适用 a(追加) w r+(读写) 都可写
f1 = open('w模式',encoding='utf-8',mode='r+') # 默认是读操作
# 从开始截9个 只剩下 9个字节
print(f1.truncate(1))
# seek 不好使 r模式下 是字符 rb 模式下是字节!
# f1 = open('r',encoding='utf-8',mode='rb')
# a = f1.read()
# print(a)
# f1.close()
# 最常用的几个方法 read  seek tell flush readable writeable
# open close 都得写
# 有些时候不需要 写close()
# 一个with 语句可以操作多个文件
# 他是检查 是否操作完 然后 关闭 有时间间隔
# 打开文件的第二种方式
with open('其他操作方法',encoding='utf-8') as f1, \
open('r模式',encoding='utf-8',mode='w') as f2:
#付给 f1
print(f1.read())
f2.write('da爱活动公交偶就FFljdkj')
print(f2.write('sjdiasjidj')) ## 写了多少位 14
# 有些时候不需要 写close()
# 一个with 语句可以操作多个文件
# 他是检查 是否操作完 然后 关闭 有时间间隔
#缺点:with open as 主动关闭 检查
with open('其他操作方法',encoding='utf-8') as f1:
print(f1.read())
# 在打开 的过程中 可能会关闭 然后报错IOErrorr
with open('其他操作方法',encoding='utf-8') as f2:
pass

09 文件的改      文件的改只能采取这种方法把,不能在一个文件里先读后改 只能通过一个中介在同一个文件里写错误 可以追加

1.以读的模式打开源文件

2.以写的模式创建一个新文件

3.将源文件内容读取出来,按照你的要求改成新内容,写入新内容,

4.删除原文件

5.将新文件重命名成原文件

import os
with open('amoshi ',encoding='utf-8'
) as f1 ,\
open('a模式',encoding='utf-8',mode='w')\
as f2:     #low 版 内存太大的操作不了
# old_content = f1.read()
# new_content = old_content.replace('alex','sb')
# f2.write(new_content) for old_line in f1:
new_line = old_line.replace('sb','alex')# 有就改 没有也不报错
f2.write(new_line)
#字符串操作
# 4.删除原文件
os.remove('amoshi ')
#5.将新文件重命名成原文件''' # python相同目录下
os.rename('a模式','amoshi ')

浅copy   一个代码块和两个代码块一样     深浅copy   在于  可变的不一样  共用的没区别

深copy

#__author : 'liuyang' 
#date : 2019/3/8 0008
'''
09 文件的改 1.以读的模式打开源文件 open r 2.以写的模式创建一个新文件 w 3.将源文件内容读取出来,按照你的要求改成新内容,写入新内容,
a = old b = replace() 4.删除原文件 5.将新文件重命名成原文件'''
# low 版
'''
import os
with open('amoshi ',encoding='utf-8') as f1 ,\
open('a模式',encoding='utf-8',mode='w')as f2:
# old_content = f1.read()
# new_content = old_content.replace('alex','sb')
# f2.write(new_content)
for old_line in f1:
new_line = old_line.replace('sb','alex')# 有就改 没有也不报错
f2.write(new_line)
#字符串操作
# 4.删除原文件
os.remove('amoshi ')
#5.将新文件重命名成原文件 # python相同目录下
os.rename('a模式','amoshi ')
'''
# f = open('amoshi',encoding='utf-8',mode='r')
# a=f.read()
# f1=open('a' ,encoding='utf-8',mode='w')
# f =a.replace('alex','sb')
# f.close()
# f1.close()
# 不行 # 深浅 copy
# 赋值运算 变量指的是同一个
l1 = [1,2,3,[11,22]]
l2 = l1 # 鲁迅 = 周树人
# 共用一个
# 元组的列表也可以
l2.append(666)
l2[-2].append(666)
print(l1)
print(l2) # 浅 copy # 面试题考的较多 深浅copy
#copy 复制,浅浅的复制一份
# lisT dict set 都可以
l1 = [1,2,3,[11,22]]
l2 =l1.copy() # 只是copy了一个列表 元素还是沿用了之前的元素
# copy 了一个外壳 # 整容 成一样的了 但是不一样人
print(id(l1))
print(id(l2))
# 内存地址不一样 # 元素内存地址一样
print(id(l1[0]))
print(id(l2[0]))
# l1 变 l2 不变 内存里的两个
l1.append(666)
print('前:',l1)
print(l2) #
l1[-2].append(22)
print(l1)
print(l2)
# 浅 copy: 复制一个外壳(列表),
#但是列表里面的所有元素,都共用一个。
# 深copy:深深的复制一下
import copy
l1 = [1,2,3,[11,22]]
l2 = copy.deepcopy(l1)
print(id(l1),id(l2))
# 不可变数据类型 共用 指向同一个
print(id(l1[0]))
print(id(l2[0])) # 可变的数据类型 不共用一个
print(id(l1[-1]))#43439688
print(id(l2[-1]))#43378888 # 不改变
l1[-1].append(222)
print(l1)
print(l2)
# 深copy:同一个代码块不同代码块
#不仅创建一个 # 浅copy 只 copy 一个外壳
# 其它的内容全部共用

# 下周一 上午 总结知识点
#(知识点,带着做题)
# 晚上考试
写文件  和 追加 文件  'w'和 ‘a’  没有文件创建一个新文件
with open('wenjian' , 'w' , encoding='utf-8')
with open('wenjian' , 'a' , encoding='utf-8')

python学习 day7 (3月8日)的更多相关文章

  1. Python 学习日志9月20日

    9月20日 周三 多大年龄了,还活得像个小孩.——急什么,人生又不长. 你习惯了思考宇宙星辰,一百年真的不长,一生也就不那么长,许多人的价值观念你也就无法理解.同样,许多人也无法理解你的价值观念,感兴 ...

  2. Python 学习日志9月19日

    9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...

  3. Python学习日志9月17日 一周总结

    周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...

  4. Python 学习日志9月21日

    9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...

  5. Python学习日志9月13日

    昨天的学习日志没有写,乱忙了一整天,政治电脑. 好奇心重,想要给电脑装上传说中LInux操作系统,各种小问题折腾到半夜,今天又折腾到晚上才真正的装上系统. 可是装上系统后又发现各种的不好用.虽然界面比 ...

  6. Python学习日志9月16日

    刚才我差点睡着了,差资料的时候太费神,有些累. 今天早晨学习了<head first HTML and CSS>,今天把昨天没看了的关于字体和颜色的一章节看完了,真长.我详细的做了笔记,并 ...

  7. python学习 day19 (3月26日)----(对象组合)

    深谙:非常透彻地了解:熟悉内中情形.谙,读作‘ān’ 熟悉. 1.面向对象作用:规划了代码中的函数处理的是哪一类问题 解决了传参的问题 方便扩展 方便重用 2.类的定义和使用类当中有哪些成员 ''' ...

  8. Python学习日志9月15日

    一周就要过去了,而我跟一周以前没什么区别.回想一下,我这周做了什么事情呢.恍然若失.这周的精力都浪费在很多不必要的事情上了.学过一片古文,讲后羿学射箭,他有一个同学跟他一样聪明,在一起学习.后羿呢,专 ...

  9. Python学习日志9月14日

    今天早晨又没有专心致志的学习,我感觉我可能是累了,需要减轻学习的程度来调整一下咯.这几天装电脑弄的昏天暗地的,身体有点吃不消了.时间真是神奇的魔法,这半个月来,每隔几天都有想要改变策略的想法.今天早晨 ...

随机推荐

  1. empty 与 remove 的区别

    empty()移除指定元素中的所有子节点,拿$("p").empty()来说,他只是把<p>dsfsd</p>中的文本给移除了,而留下 了<p> ...

  2. cf-Global Round2-E. Pavel and Triangles

    题目链接:http://codeforces.com/contest/1119/problem/E 题意:给定n个数a[i],分别表示长度为2i-1的木条的数量,问使用这些木条最多能构成多少三角形. ...

  3. POJ 1177 Picture(线段树周长并)

      描述 A number of rectangular posters, photographs and other pictures of the same shape are pasted on ...

  4. WAV与PCM

    转: 1.PCM格式介绍: PCM(Pulse Code Modulation)也被称为 脉码编码调制.PCM中的声音数据没有被压缩,如果是单声道的文件,采样数据按时间的先后顺序依次存入.(它的基本组 ...

  5. linux命令学习之:ps

    Linux中的ps命令是Process Status的缩写.ps命令用于报告当前系统的进程状态,列出系统中当前运行的那些进程.可以搭配kill指令随时中断.删除不必要的程序. 要对进程进行监测和控制, ...

  6. nginx安装扩展 sub_filter&http_ssl_module

    nginx之所以轻,因为默认没有安装各种各样的扩展: nginx安装扩展插件: 下面列出两个可能会用到的插件 一.sub_filter内容过滤器,这个在nginx做http转发的时候会很常用 1.下载 ...

  7. Composer 安装以及使用方法

    Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. Linux 下安装 curl -sS https://getcomposer.org/ ...

  8. A Spectral Technique for Correspondence Problems Using Pairwise Constraints

    Abstract 我们提出了一种有效的谱方法来寻找两组特征之间的一致对应关系.我们建立了一个图的邻接矩阵M,它的节点代表了潜在的对应,而链接上的权重代表潜在的对应之间的成对协议.正确的分配可在彼此之间 ...

  9. gearman的持久化,以mysql的方式

    1.为什么要持久化? gearman的job server中的工作队列存储在内存中,一旦服务器有未处理的任务时重启或者宕机,那么这些任务就会丢失.持久化存储队列可以允许添加后台任务,并将其存储在外部的 ...

  10. xml转化为Dictionary

    代码 public SortedDictionary<string, object> FromXml(string xml) { SortedDictionary<string, o ...