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的更多相关文章
随机推荐
- 自动化测试基础-断言(Assert)使用方法
junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类.1.assertTrue/False([String message,]boolean condi ...
- Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0 解决方法: 要对切割字符进行转义\\
使用str.split("[",15)时,出现Exception in thread "main" java.util.regex.PatternSyntaxE ...
- 《剑指offer》第五十四题(二叉搜索树的第k个结点)
// 面试题54:二叉搜索树的第k个结点 // 题目:给定一棵二叉搜索树,请找出其中的第k大的结点. #include <iostream> #include "BinaryTr ...
- 控制 datetimepicker 显示位置
1. datetimepicker 位置 pickerPosition 有以下几个属性值,望文生义不解释 $('.form_datetime').datetimepicker({ pickerPo ...
- Android 如何将手机屏幕投影到 PC 屏幕上或者投影仪上做演示?
Android 如何将手机屏幕投影到 PC 屏幕上或者投影仪上做演示? 公司开发款APP,要给领导演示,总不能用手机面对面演示吧.所以找了好久,找到一款体验超好的: Total Control-帮助你 ...
- Python 编程快速上手 第十八章 用 GUI 自动化控制键盘和鼠标
前言 这一章节讲述了如何实现 GUI 自动化,首先讲了一些处理异常状况的方法,然后是关于 GUI 自动化的内容,主要有三个部分: 控制鼠标 图像识别 控制键盘 下面引用一段话: 请将 GUI 自动化看 ...
- Count Up Down(上下计数)
这个题目是 Kayak 发布的代码挑战题目. 最简单的描述就是不使用循环,输出 0 到 5,然后同样不是会用循环的方式再次输出 5 到 0. 英文描述 Part 1 Write a program t ...
- 6、DHCP
DHCP 一.DHCP简介 1.什么是DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种用户简化计算机IP地址管理的标准: 2.DHC ...
- tcpcopy真实流量压测工具
https://quentinxxz.iteye.com/blog/2249799 http://blog.chinaunix.net/uid-25057421-id-5576741.html htt ...
- JComBox的用法
JComboBox的使用: 类层次结构图: java.lang.Object --java.awt.Component --java.awt.Container - ...