python day08
ascii码转换成字符:ord(str)
字符串转换成ascii:chr(int)
三种字符串
1、普通字符串 --以字符作为输出单位
print(u'abc') 显示给用户看的字符串
2、二进制字符串 --以字节作为输出单位
print(b'\xe4\xbd\x95\xe8\x8b\x8f\xe5\x81\xa5') 用于传输用
3、原义字符串 --以字符作为输出单位,所有普通字符串以原义输出
print('run\tagain\nstop')
print(r'run\tagain\nstop') 取消转义 不会自动换行,保持原字符串
文件操作的三步骤
1、打开文件 硬盘空间被操作系统持有,文件对象被应用程序持有
f = open('a.txt','r',encoding='utf-8')
2、对文件进行操作
date = f.read()
3、关闭文件 释放文件(释放操作系统对硬盘空间的持有)
f.close()
文件基本的读
f = open('a.txt','r',encoding='utf-8')
date = f.read() -->一次性把所有文件都读出来
date = f.read(10) -->一次读十个字符
date = f.readline() -->一次读一行
date = f.readlines() -->分行一次性读出来,换行标识作为换行依据,存在同一个列表里。
f.close()
文件基本的写
w = open('a.txt','w',encoding='utf-8')
w.write('abc') -->直接写入文件
w.flush() -->将文件保存到文件夹
w.write('opq\nrst') -->遇到换行标识就会自动换行
w.writelines(list) -->一次添加多行,多行内容必须添加在同一个列表里,并且要标上标识符\n
w.close() -->1、将文件保存到内存中 2、释放硬盘空间
with…open()语法
为了整合优化文件资源的打开与释放
--再with的缩进内操作文件,一旦退出缩进,就会释放硬盘空间
part1:
with open('a.txt','r',encoding='utf-8') as f:
date = f.read() #进行一些对文件的操作指令
#一旦退出缩进,硬盘空间就被释放
part2
with open('a.txt','r',encoding='utf-8') as f,open('b.txt','r',encoding='utf-8') as v: #同时打开两个文件
#对两个文件的操作
part3:
with open('a.txt','r',encoding='utf-8') as f:
with open('b.txt','r',encoding='utf-8') as v:
date = f.read()
date = v.read()
date = f.read() #可以进行操作
date = v.read() #不可以操作
文件的操作模式
主模式 r | w | a | x
从模式 t | b | +
r:只能读取已经存在的文件,不存在就报错
w:如果文件存在,就先清空再写,如果文件不存在,就新建再写
a:如果文件存在,就在文件内容的末尾继续添加写,如果文件不存在,就新建再写
x(了了解):只能新建文件再写,如果文件存在就报错
t:默认的从模式,以字符进行操作
b:以字节进行操作
+:可读可写
rt:文件必须存在,不存在就报错,文件操作采用字符方式,简写r
wt:文件可以存在,也可以不存在,存在则清空再写入,不存在则创建写入,文件操作采用字符方式,简写w
at:文件可以存在,也可以不存在,存在则再文件内容末尾进行添加,不存在则创建写入,文件操作采用字符方式,简写a
rb:文件必须存在,不存在就报错,文件操作采用字节方式
wb:文件可以存在,也可以不存在,存在则清空再写入,不存在则创建写入,文件操作采用字节方式
ab:文件可以存在,也可以不存在,存在则再文件内容末尾进行添加,不存在则创建写入,文件操作采用字节方式
r+t:文件必须存在的可读可写,默认从头开始替换写,文件操作采用字符方式
w+t:可读可写,文件存在则先清空再写,文件不存在就先创建再写,文件操作采用字符方式
a+t:可读可写,文件存在则在文件内容末尾追加写,文件不存在就先创建再写,文件操作采用字符方式
r+b:文件必须存在的可读可写,默认从头开始替换写,文件操作采用字节方式
w+b:可读可写,文件存在则先清空再写,文件不存在就先创建再写,文件操作采用字节方式
a+b:可读可写,文件存在则在文件内容末尾追加写,文件不存在就先创建再写,文件操作采用字节方式
文件操作编码问题
1、在t模式下:文件保存采用什么编码,打开就用什么编码打开,不然会出现乱码,如果不写编码,就会用系统默认编码
所以t模式下一定要指定编码--什么编码写,什么编码打开
2、在b模式下:硬盘文件保存的是二进制的字符串形式,写入也是提前编写好的二进制文件,电脑可以识别编码
所以b模式下不需要去指定编码
文件的复制
with open('a.txt','r',encoding='utf-8') as rf: #通过采用字符操作复制
with open('b.txt','w',encoding='utf-8') as wf:
for line in rf
wf.write(line) #可以把a文件一行一行的读出来并复制到b文件里
with open('a.txt','rb') as rf: #通过采用字节操作复制
with open('b.txt','wb') as wf:
for line in rf
wf.write(line)
游标操作
只有在r模式下才可以进行游标操作(游标操作的是字节)
with open('a.txt','rb') as rb:
date = rb.read(10)
f.seek(2,0) #seek(offset,whence) offset 前面的是游标移动的字节数,正数表示向后移动,负号表示向前移动。
逗号后面的数字在b模式下可以为0、1、2
whence 0:游标置到开头 1:游标置到当前位指 2:游标置到末尾
# 你是日本人
with open('target.txt', 'rb') as f:
# 先读6个字节
data = f.read(6)
print(data.decode('utf-8')) # 你是
# 将游标从头开始往后偏移3个字节
f.seek(3, 0)
data = f.read(6)
print(data.decode('utf-8')) # 是日
# 从当前游标位置往前偏移3个字节
f.seek(-3, 1)
data = f.read(3)
print(data.decode('utf-8')) # 日
f.seek(-3, 2)
data = f.read(3)
print(data.decode('utf-8')) # 人
python day08的更多相关文章
- python day08 文件操作
2019.4.8 S21 day08笔记总结 一.进制 对于计算机而言无论是文件存储 / 网络传输数据本质上都是:二进制(010101010101),如:电脑上存储视频/图片/文件都是二进制: QQ/ ...
- python day08作业答案
1. a f=open('11.txt','r',encoding='utf-8') a=f.read() print(a) f.flush() f.close() b. f=open('11.txt ...
- python day08作业
- 铁乐学Python_day08_文件操作
一.[基本的文件操作] 参数: 1.文件路径: 2.编码方式: 3.执行动作:(打开方式)只读,只写,追加,读写,写读! #1. 打开文件,得到文件句柄并赋值给一个变量 f = open('E:/Py ...
- Python面向对象进阶和socket网络编程-day08
写在前面 上课第八天,打卡: 为什么坚持?想一想当初: 一.面向对象进阶 - 1.反射补充 - 通过字符串去操作一个对象的属性,称之为反射: - 示例1: class Chinese: def __i ...
- python开发学习-day08(socket高级、socketserver、进程、线程)
s12-20160305-day08 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- day08 python文件操作
day08 python 一.文件操作 1.文件操作的函数 open(文件名, mode=模式, encoding=字符集) 2.模式: r, w, a, r+ ...
- 初学python之路-day08前期总结
# 1# 计算机原理:控制器 运算器 存储器 input设备 output设备 IO流# 三大核心:CPU 内存 硬盘 # 内存分布:栈区 与 堆区# 如二进制与十进制的转换,如1111转成十进制为1 ...
- 初学python之路-day08
#学习了编码后,还要了解三种字符串.# 一.# 普通字符串:u''以字符作为输出单位,# print(u'abc') # 用于显示abc# # 二进制字符串:b'' 二进制字符串以字节作为输出单位# ...
随机推荐
- AI应用开发实战 - 定制化视觉服务的使用
AI应用开发实战 - 定制化视觉服务的使用 本篇教程的目标是学会使用定制化视觉服务,并能在UWP应用中集成定制化视觉服务模型. 前一篇:AI应用开发实战 - 手写识别应用入门 建议和反馈,请发送到 h ...
- Linux下单机实现Zookeeper集群
安装配置JAVA开发环境 下载ZOOKEEPER zookeeper下载地址 在下载的zookeeper目录里创建3个文件,zk1,zk2,zk3,用于存放每个集群的数据文件. 并在三个目录下创建da ...
- 永久更改pip源和创建虚拟环境
一.永久更改pip源 1.windows 编辑%APPDATA%/pip中的pip.ini(若无则新建): C:\Users\v_xmmxhli λ cd %APPDATA%/pip C:\Users ...
- C#类型(一)
1.System.Object C#的所有类型都是派生自System.Object 也就是说下面的两个类型定义完全一致 // 隐式派生自Object public class Person{ } { ...
- vue学习笔记2
Vue.js - Day2 品牌管理案例 添加新品牌 删除品牌 根据条件筛选品牌 1.x 版本中的filterBy指令,在2.x中已经被废除: filterBy - 指令 <tr v-for=& ...
- 深度学习之卷积神经网络(CNN)详解与代码实现(二)
用Tensorflow实现卷积神经网络(CNN) 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10737065. ...
- SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作
摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...
- 云计算OpenStack:云计算介绍及组件安装(一)--技术流ken
云计算介绍 当用户能够通过互联网方便的获取到计算.存储等服务时,我们比喻自己使用到了“云计算”,云计算并不能被称为是一种计算技术,而更像是一种服务模式.每个运维人员心里都有一个对云计算的理解,而最普遍 ...
- .NET(C#、VB)移动开发——Smobiler平台控件介绍:TextTabBar控件
TextTabBar控件 一. 样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个TextTabBar控件到窗体界面上 ...
- C# 反射 判断类的延伸类型
判断类型是否被继承.实现 1.判断是否实现了指定接口 添加测试类: public class TestClass2 : TestClass1 { } public class TestClass1 : ...