day_07_python_1124
01 昨日内容回顾
数据类型补充:
str <---> list split join
list <---> set set(list) list(set())
list <---> tuple tuple(list) list(tuple)
int str bool
bool False: "" 0 [] () set() {} None
tuple:
(1) 与元素数据类型相同
list:在循环一个列表时,最好不要改变列表的大小,会影响结果。
倒叙循环:
for i in range(len(l1)-1,-1,-1):
pass
dict:在循环一个字典时,不能改变字典的大小,会报错。
is id ==
== 比较的是两边的数值是否相同
id() 对象的内存地址
内存地址相同:变量的在内存中的指向是同一个内存地址 同一个内容。
is 比较的是内存地址相同,是否是同一个人。
代码块:
一个文件。 命令行的一行就是一个代码块。
同一代码块中的缓存机制:
适应的数据类型:str int bool
意义:
1,节省内存
2,提高性能。
小数据池:
适应的数据类型:str(一定范围) int(-5~256) bool
意义:
1,节省内存
2,提高性能。
编码进阶:
ascii unicode utf-8 gbk
1,不同编码之间不能相互识别。(乱码或者出错)
2,网络传输和数据存储不能是通过unicode的编码方式的01010101.
python3x:
str:内部编码方式:unicode
不能直接将字符串用于网络传输和数据存储。
bytes:内部编码方式:非unicode
英文:
str:'alex'
内存编码:unicode
bytes:b'alex'
内存编码:非unicode
中文:
str:'太白'
内存编码:unicode
bytes:b'\ex3\ex3\ex3\ex3\ex3\ex3\'
内存编码:非unicode
unicode ----> b1 = s1.encode('gbk')
gbk --------> b1.decode('gbk')
unicode ----> s1.encode('utf-8')
utf-8 --------> b1.decode('utf-8')
b1 gbk的bytes类型
gbk -----> utf-8
b1.decode('gbk').encode('utf-8')
深浅copy:
l1 = [1,2,3,[22,]]
l2 = l1.copy()
浅copy:在内存中创建一个新的列表,但是内容沿用原列表的内容。
import copy
l1 = [1,2,3,[22,]]
l2 = copy.deepcopy(l1)
深copy:在内存中创建一个新的列表,但是列表中的不可变的数据类型沿用原来的,可变的数据类型创建新的内存地址。
02 作业讲解
03 文件操作
初识
美女护士教师空姐的联系方式.txt
如果想要通过python代码操作这个文件:必须的三要素:
path:文件的路径。
mode:r w r+ w+ a ....
encoding: 编码方式
报错原因:
1,路径错误。 \与后面的那个字符具有了特殊意义。
解决方式:
r'd:\美女护士空姐联系方式.txt' 在路径最前面+ r
'd:\\美女护士空姐联系方式.txt' 第一个\对第二个进行转义。
2,Unicodedecodeerror: 编码问题。
encoding='utf-8' 打开文件的编码与文件存储时的编码不一致。
3, encoding 只是声明了此文件的需要用什么编码本编码解码而已。
4,路径:
绝对路径:从磁盘(根目录)开始,直到找到你的文件。
相对路径:当前路径(当前文件夹)找到的文件。
读(r rb r+ r+b)
写 (w wb w+ w+b)
追加 (a ab a+ a+b)
以上总结:
最常用的 r r+ 其次 rb w wb a
带b的模式都是操作的非文本类的文件:图片 音频,视频。
文件操作的其他功能
readable writable flush tell seek truncate
文件的改的操作
处理文件的另一种方式:
with open()
# 03 文件操作初识以及 读模式
# f1 = open('e:\molinbin.txt',encoding='utf-8',mode='r')# content = f1.read()# print(content)# print(f1.read())#有返回值,可以直接用# f1.close()
'''f1 f file file_handler ,f_h.... 文件句柄open() 内置函数 这个函数实际上是调用的操作系统的对文件操作的功能,windows:默认的编码方式gbk.linux: 默认的编码方式utf-8.IOS:默认的编码方式utf-8.接下来你对文件进行的任何操作,都需借助文件句柄操作。f.close()''''''1, 打开文件产生文件句柄(path, encoding mode)。2,对文件句柄进行操作。3,关闭文件句柄。'''
# f1 = open(r'e:\molinbin.txt',encoding='utf-8',mode='r')##在路径最前面+ r# content = f1.read()# print(content)# f1.close()
# f1 = open('file1',encoding='utf-8',mode='r')# content = f1.read()# print(content)# f1.close()
# r 下的五种读取方式# 1,read() 全读出来
# 2,read(n) 读n个字符# f1 = open('file1',encoding='utf-8',mode='r')# content = f1.read(4)# print(content)# f1.close()
'''在r 模式下 按照字符读取在rb 模式下按照字节读取'''# 3 按行读取 readline()##有返回值# f1 = open('file1', encoding='utf-8', mode='r')# content = f1.readline()# content = f1.readline()# content = f1.readline()# print(content,type(content))# print(f1.readline())# f1.close()
# 4 readlines() 返回一个列表,列表中的每个元素是原文件的每行的数据。# f1 = open('file1', encoding='utf-8', mode='r')# content = f1.readlines()# print(content)# f1.close()
#for循环# f1 = open('file1',encoding='utf-8')# for line in f1:# print(line.strip)# f1.close()
# rb 模式# b模式操作的文件是非文字类的文件:图片,视频,音频等等。# read() read(n) readline() readlines() for 循环# f = open('2.png',mode='rb')# print(f.read())# f.close()
# f = open('2.png',mode='rb')# print(f.read(3))# 按照字节# f.close()
'''在r 模式下 按照字符读取在rb 模式下按照字节读取'''
# r+ 读写模式# 先读后写(后追加) #不读就往光标位置添加# f1 = open('file1', encoding='utf-8', mode='r+')# content = f1.read()# print(content)# f1.write('深圳')# f1.close()
# 如果我就要先写后读呢?# 光标,指针
# f1 = open('file1',encoding='utf-8',mode='r+')# f1.seek(0,2)# 把光标调整到最后,2表示最后# f1.write('北海')# f1.seek(0)# content = f1.read()# print(content)# f1.close()
# 在r+ 读写模式下,应该先读后写入。
# 04 文件操作:写模式
# 写# w wb w+ w+b# 没有文件创建文件写入,有文件清空原文件内容写入新内容。# w模式 必须是以字符串的内容写入# f1 = open('file2',encoding='utf-8',mode='w')# f1.write('北海')# f1.write('北海')#清空一次# f1.write('北海')# f1.write('北海')# f1.write('北海')# f1.close()
# f1 = open('2.png',mode='rb')# content = f1.read()# 以bytes读取原图片获取数据# f1.close()# print(content)
# f1 = open('2.png',mode='rb')# content = f1.read() # 以bytes读取原图片获取数据# f1.close()# f2 = open('1.png',mode='wb')# f2.write(content)# 将数据写入到一个新文件图片# f2.close()# 完成了对原图片的复制。
# w+ :写读模式# f1 = open('file2',encoding='utf-8',mode='w+')# f1.write('78945613')# f1.seek(0)# print(f1.read())# f1.close()
# 05 文件操作:追加模式# 追加模式:a ab a+ a+b
# 没有文件创建文件追加内容,有文件在原文件的末尾追加新内容# f1 = open('file3', encoding='utf-8', mode='a')# f1.write('老男孩教育!')# f1.close()
# f1 = open('file3', encoding='utf-8', mode='a')# f1.write('太白金星')# f1.close()
# 06 文件操作:其他操作方法# f2 = open('file2',encoding='utf-8',mode='w')# f2.write('guangxinanning')# f2.flush()# 强制保存 相当于ctrl + s# f2.close()
# readable writable 判断一个文件句柄是否可读,可写。# f2 = open('file2',encoding='utf-8',mode='w')# f2.write('广西南宁')# print(f2.readable())# if f2.readable():# f2.read()# f2.close()
# seek tell 按照字节去调整读光标位置# f1 = open('file2',encoding='utf-8')# # ret = f1.read()# print(f1.tell())#获取当前指针位置# f1.seek(3)# print(f1.read())# f1.close()
# truncate() 只能在可写的模式下 截取原文件。# 只能从头截取,不能调整光标截取一部分。
# f1 = open('file2',encoding='utf-8',mode='r+')# f1.seek(6)# ret = f1.turencate(4)# print(ret)# f1.close()
# 不能在w模式下使用truncate# f1 = open('file2', encoding='utf-8',mode='w')# f1.truncate(6)# f1.close()
# 总结:readable writable flush tell seek truncate
# 07 文件操作:文件的改
#另一种打开文件的操作方式:#1,自动关闭文件句柄# with open('file1',encoding='utf-8') as f1:# content = f1.read()# print(content)
# with open('file1',encoding='utf-8') as f1, \# open('file2', encoding='utf-8',mode='w') as f2:# print(f1.read())# f2.write('666')
# with open('file1',encoding='utf-8') as f1:# f1.read()# with open('file1', encoding='utf-8',mode='w') as f2:# f2.write('5555555')
# 文件的改:# 方法一:# 1,以读的模式打开原文件,产生文件句柄f1# 2, 以写的模式打开新文件,产生文件句柄f2.# import os# with open('log',encoding='utf-8') as f1,\# open('log.bak',encoding='utf-8',mode='w') as f2:# # 3,读取原文件 将原文件的内容改写成新内容写入新文件。# old_content = f1.read()# new_content = old_content.replace('alex', 'SB')# f2.write(new_content)## # 4,删除原文件。# os.remove('log')# # 5,将新文件重命名成原文件。# os.rename('log.bak','log')
# 升级版# import os# with open('log',encoding='utf-8') as f1,\# open('log.bak',encoding='utf-8',mode='w') as f2:# # 3,读取原文件 将原文件的内容改写成新内容写入新文件。# for line in f1:# new_line = line.replace('SB', 'alex')# f2.write(new_line)# # 4,删除原文件。# os.remove('log')# # 5,将新文件重命名成原文件。# os.rename('log.bak','log')
day_07_python_1124的更多相关文章
随机推荐
- vue-cli3快速创建项目
文档:https://cli.vuejs.org/zh/guide/ 条件: npm 更至最新 node >=8.9 1.全局安装 npm install -g @vue/cli 或 yarn ...
- Spring Cloud 入门教程(四): 分布式环境下自动发现配置服务
前一章, 我们的Hello world应用服务,通过配置服务器Config Server获取到了我们配置的hello信息“hello world”. 但自己的配置文件中必须配置config serve ...
- Codeforces 101173 C - Convex Contour
思路: 如果所有的图形都是三角形,那么答案是2*n+1 否则轮廓肯定触到了最上面,要使轮廓线最短,那么轮廓肯定是中间一段平的 我们考虑先将轮廓线赋为2*n+2,然后删去左右两边多余的部分 如果最左边或 ...
- 图片路径转base64字节码
package product; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...
- 掌握R语言中的apply函数族(转)
转自:http://blog.fens.me/r-apply/ 前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是 ...
- 安卓音、视频播放功能简单实现 --Android基础
1.音乐播放功能 关键代码: MainActivity.java: package thonlon.example.cn.musicdemowithoutservice; import android ...
- 11月28日 记录一个错误❌,看ruby on rails --active support core extensions--present? && presence && duplicable?
❌错误 1. @job.resume.count: 提示❌ undefined method `resume' ✅: @job.resumes.count //解释:调出某一个job的所有简历, ...
- p1209 Barn Repair
用优先队列存放不连续的断点及断的位置.优先取间距大的,在断点断开. #include <iostream> #include <cstdio> #include <cma ...
- Build Castles(构建城堡)
Charlemagne, the King of Frankie, 英文描述 请参考图片中的说明. 中文描述 根据给出的数组确定能够盖多少城堡. 思路和点评 我不能确定我的思路是正确的,也欢迎大家参与 ...
- 04 flask 项目整体构建
本文主要的目标是创建flask基本的项目架构,总体架构: 详细的项目目录结构: Flask 项目创建的过程 一.项目(students)创建初始化工作 1. 创建项目的虚拟环境 mkvirtualen ...