# 作业1
# 设计两个类
# 一个点累 属性 x y 坐标
# 一个矩形类 属性有左上角 和 右下角坐标
# 方法 1.计算矩形面积 2.判断点是否在矩形内
# 实例化一个点对象 一个正方形对象 输出矩形的面积 输出点是否在矩形内class Point(object):def __init__(self,x:int,y:int):# 需要2个int 类型的参数        self.x = xself.y = yclass Rectangle(object):def __init__(self,top_left:Point,bottom_right:Point):self.top_left = top_leftself.bottom_right = bottom_rightdef get_area(self):length = abs(self.bottom_right.x - self.top_left.x)width = abs(self.top_left.y - self.bottom_right.y)return length * widthdef is_inside(self,point):if self.bottom_right.x >= point.x >= self.top_left.x and self.top_left.y >= point.y >= self.bottom_right.y:return Trueelse:return False
p1 = Point(4,20)
p2 = Point(30,8)r = Rectangle(p1,p2)print(r.get_area())p = Point(10,13)
print(r.is_inside(p))pp = Point(4,19)
print(r.is_inside(pp))# 建立一个汽车类Auto
# 包括轮胎个数 汽车颜色 车身重量 速度等属性 并通过不同的构造方法创建实例
# 至少要求 汽车可以加速减速停车
# 在定义一个小汽车类CarAuto 继承Auto 并添加空调 CD 属性
# 并且实现方法覆盖加速 减速的方法class Auto(object):def __init__(self,color,weight,speed=0,wheel_count=4):self.color = colorself.weight = weightself.speed = speedself.wheel_count = wheel_countdef chamge_speed(self,x):if x == 0:self.speed = 0returnself.speed += x            # if self.speed <= 0 and x < 0: # 车速为0# return # 表示函数结束class CarAuto(Auto):def __init__(self,color,weight,ac,navigator,speed=0,wheel_count=4):super(CarAuto,self).__init__(color,weight,speed,wheel_count)self.navigator = navigatorself.ac = accar = Auto('白色',1.6)
car.chamge_speed(-10)
print(car.speed)
car.chamge_speed(100)
print(car.speed)
car.chamge_speed(0)
print(car.speed)car = CarAuto('白色',1.6,'美的','Android')# open 内置函数 打开一个文件
# file:文件的路径
# mode: 打开文件的模式 r:只读 w:写入 b:二进制 t:文本形式打开
# mode: 默认使用rt
# encoding: 用来指定文件的编码格式 win 系统 默认是gbk
# file = open('xxx.txt') # 默认以rt打开 文件不存在报错
# file = open('xxx.txt','w',encoding='utf8') # 创建一个新的文件
# file.write('你好')
# file.close()
file = open('xxx.txt',encoding='utf8')
print(file.read()) # 全部读出来 如果文件很大 负载会很大 尽量采取分开读
print(file.readline()) # 只读取一行数据
file.readlines() # 读取所有行的 数据 放到列表里
file.close()#x = file.read(10) # 指的是读取的长度
#print(x)# 优化:没有绝对的优化 除非加硬件# import os
# # 文件拷贝功能
# file_name = input('请输入一个文件路径:')
# if os.path.isfile(file_name): # 判断文件是否存在# # 打开旧文件# old_file = open(file_name,'rb') # 以二进制的形式读# # old_file = open(file_name,encoding='utf8')# # name = file_name.rpartition('.') # sss . txt# # new_file_name = names[0] + '.bak.' + names[2]# # new_file_name= 'test.txt'# # 生成新的文件# name = os.path.splitext(file_name) # sss .txt# new_file_name = names[0] + '.bak.' + names[1]# new_file = open(new_file_name,'wb') # 以二进制的形式写# # new_file = open(new_file_name,'w',encoding='utf8')# # new_file.write(old_file.read())# while Trun:# content = old_file.read(1024)  # 读写分成一段一段的 防止文件过大 都挤到内存里# new_file.write(content)# if not content:# break# # 时间多了些 但效率好点    # new_file.close()# old_file.close()# else:# print('输入的文件不存在')# csv 的文件读写
# csv 文件 逗号分隔值
# 用纯文本的形式存储表格数据# 写入
import csv
# file = open('test.csv','w',encoding='utf8',newline='') # 打开一个文件 newline 就不会多出来空行了
# w = csv.writer(file)
# # w.writerow(['name','age','score','city'])
# # w.writerow(['zhangsan','22','99','北京'])
# # w.writerow(['lisi','23','100','深圳'])# # 一行一行  和 多行添加
# w.writerows(# [# ['name','age','score','city'],# ['zhangsan','22','99','北京'],# ['lisi','23','100','深圳'],# ['zss','22','100','深圳'],# ]
# )# file.close()# 读取
file = open('test.csv','r',encoding='utf8',newline='')
r = csv.reader(file)
for data in r:print(data)
file.close()## 将数据写入到内存涉及到 StringIO BytesIO
from io import StringIO,BytesIO
s_io = StringIO()
s_io.write('hello') # 把数据写入到了内存缓存起来
s_io.write('good')
print(s_io.getvalue())
s_io.close()s = ''
s += 'hello'
s += 'world'
s += 'python'
print(s)
# file 需要一个文件流对象
s_io = StringIO()
print('hello',file=s_io)
print('helloo',file=s_io)
print('hellooo',file=s_io)
print(s_io.getvalue())
s_io.close()# 二进制
b_io = BytesIO()
b_io.write('你好'.encode('utf8'))
print(b_io.getvalue())
print(b_io.getvalue().decode('utf8'))
b_io.close()# sys模块使用
import sys
# sys.stdin 接收用户的输入
# sys.stdout 标准输出
# sys.stderr 错误输出# s_in = sys.stdin
# while True:# content = s_in.readline().rstrip('\n') # hello\n == hello   \n == ''# if content == '':# break# print(content)# sys.stdout = open('stdout.txt','w',encoding='utf8')
# print('2020')
# print('good')
# sys.stdout.close()# sys.stderr = open('stderr.txt','w',encoding='utf8')
# print(1 / 0)
# sys.stderr.close()## 序列化 和 反序列化
# 序列化:将数据从内存持久化保存到本地的过程
# 反序列化:将数据从本地加载到内存的过程# write 只能写入字符串或者二进制
# 字典 列表 数字等都不能直接写入到文件# 将数据转换为字符串 repr/str   使用json模块
# json 本质就是字符串 区别在于json里要用双引号表示字符串
# 将数据转换为二进制 使用pickle模块
import jsonnames = ['zss','lisi','jack','tony','shy']
x = json.dumps(names) # dumps 将数据转换为json字符串
print(x)# json 数据持久化的2个方法 dumps dumpfile = open('names.txt','w',encoding='utf8')
# names = ['zss','lisi','jack','tony']
# file.write(str(names))
# file.write(x)
json.dump(names,file) # dump 将数据转换为json字符串的同时写入到指定文件
file.close()# json 反序列化 2个方法
# loads 将json 字符串加载为python里的数据
# load 读取文件 把读取的内容加载为python里的数据x = '{"name":"lisi", "age":"18"}'
p = json.loads(x)
print(p)x = open('names.txt','r',encoding='utf8')
p = json.load(x)
print(p)
x.close()# json python 转换有对应类型# # pickle 模块的使用
# python 里存入数据只支持 字符串 二进制
# json 将python里的数据(str/list/tuple/dict/int/float/bool/None)等转换为对应的json类型
# pickle 将python里任意对象转换为二进制import pickle# pickle 下的方法
# 序列化  dumps 将python数据转换为二进制
# #      dump  将python数据转换为二进制的同时写入到指定文件
# 反序列化 loads 将二进制加载为python里的数据
# #      load   读取文件 把文件的二进制内容加载为python里的数据
names = ['zss', 'lisi', 'jack', 'tony', 'shy']
b_names = pickle.dumps(names)
print(b_names) # 二进制的了# 一种方法
file = open('names.txt','wb')
file.write(b_names) # 写入的是二进制
file.close()file1 = open('names.txt','rb')
x = file1.read()
y = pickle.loads(x)
print(y)
file1.close()# 第二种方法
file2 = open('names.txt','wb')
pickle.dump(names,file2)
file2.close()
#
file3 = open('names.txt','rb')
pickle.load(file3)
file3.close()# 应用
class Dog(object):def __init__(self,name,color):self.name = nameself.color = colordef eat(self):print(self.name + '在吃东西')
d = Dog('大黄','白色')
# 保存到文件里 原封不动的保存
pickle.dump(d,open('dog.txt','wb'))# 从文件加载出来 加载出来还可以直接调用方法
dd = pickle.load(open('dog.txt','rb'))
dd.eat()print(dd.name,dd.color)# json 和 pickle 区别# pickle 用来将数据原封不动转换为二进制 但是这个二进制 只能在python识别
# json 只能保存一部分信息 作用是用来在不同的平台传递数据 json 存储的数据基本都是基本的数据类型
# json 将对象转换为字符串 不管在哪个操作系统 编程语言 字符串都是可以识别的 但也并不是所有的都可以 有个对应关系 只有对应的才可以 不然报错# 前端页面数据是对象 json字符串
info = '{"name":"zss", "age":18, "height":1.75,"pass": true,"hobbies": ["sing","dance","basketball","rap"]}'
# 后端服务器接收之后要转换
person = json.loads(info)
print(person)
# {'name': 'zss', 'age': 18, 'height': 1.75, 'pass': True, 'hobbies': ['sing', 'dance', 'basketball', 'rap']}
print(person['name'])
# 把用户信息写入到数据库服务器 返回成功的信息
result = {'success':True}
x = json.dumps(result) # 将数据转换成json字符串
print(x)
# 前端页面接收到之后 再进行对应转换
# result = JSON.parse(x)# 接口文档:
# 全栈工程师
# 服务器工程师更容易成长为全栈工程师# 如果是一个自定义对象 默认无法转换为json 字符串 需要手动指定JSONEncoder
# print(json.dumps(p.__dict__)) # 不认识对象 但认识字典# 异常处理
# 在程序运行过程中 由于编码不规范等造成程序无法正常执行 此时程序会报错
# 为了保证程序的健壮性
# 很多编程语言都有异常处理机制
# 避免一错在错def div(a,b):return a / b# 这样程序不会直接崩掉
try:x = div(5,0)
except Exception as e: # 程序如果出错 会立即跳转到except语句print('程序出错了')print(e)
else: # 程序运行没出错 会执行else里的语句代码print('计算结果是',x)
print(22)# try...except 语句用来处理程序运行过程中的异常
#
# 还可以处理指定错误# 异常的使用场景
# age = input('请输入你的年龄:')
# if int(age) > 18:
#     print('欢迎来到我的网站')# 如果用户输入的不是年龄 程序就会报错age = input('请输入你的年龄:')
try:age = float(age) # 转换成数字
except Exception as e: # 转换出错的话
# except ValueError as e: # 指定类型的错误print('输入的不是数字')
else:if int(age) > 18:print('欢迎来到我的网站')else:print('未满18')

又开始的python-day10-20200821-文件操作相关内置函数-拷贝-读取-写入相关推荐

  1. python中f点flush是什么函数_Python文件操作及内置函数flush原理解析

    1.打开文件得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 示例文件 '你好呀' 我是于超 嗯 再见 文件操作基本流程 f=open('chenli',encoding='ut ...

  2. python学习之最常用的内置函数

    python学习之最常用的内置函数 Python 内置函数总共有70余个(通常把内置类也统称为内置函数),覆盖面广,功能强大.不过,对于初学者在初级阶段,掌握下面几个函数是当务之急. (1) 控制台输 ...

  3. Python培训教程:Python有哪些比较重要的内置函数?

    学习Python技术或者参加Python工作的小伙伴们应该都知道,在Python编程语言中会经常出现很多内置函数,很少有人清楚这些函数,但是它的功能是不可小觑的,下面小编就为大家详细介绍一下Pytho ...

  4. python常用内置函数乘法_每个 Python 高手都应该知道的内置函数

    每个 Python 高手都应该知道的内置函数 Python 将纳入高中教材,大学 VB 将被 Python 取代, 现在你还对 Python 一无所知吗?去年就被国外一机构预测, 2017 年 pyt ...

  5. Python中10个常用的内置函数

    大家好,我是小张 在 3.8 版本中,Python 解释器共有近 69 个内置函数可供使用,有了它们能极大地提高编码效率, 数量虽然不少,但在日常搬砖中只用到其中一部分,根据使用频率和用法,列出来几个 ...

  6. python hashlib安装_Hashlib加密,内置函数,安装操作数据库

    hashlib模块的md5加密: md5同样的内容加密后是一样的 md5加密后是不可逆的.即能加密,没办法解密. 撞库: 只是针对简单的,因为同样的内容加密后是一样的,难一点就不行了. 登录密码:注册 ...

  7. Python装饰器、生成器、内置函数、Json-Day05

    装饰器 装饰器本质上就是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理 ...

  8. python常用内置函数总结-Python学习教程之常用的内置函数大全

    前言 内置函数,一般都是因为使用比较频繁或是元操作,所以通过内置函数的形式提供出来.在Python中,python给我们提供了很多已经定义好的函数,这里列出常用的内置函数,分享出来供大家参考学习,下面 ...

  9. python查看变量内存地址的内置函数是_查看变量内存地址的Python内置函数是____...

    查看变量内存地址的Python内置函数是____ 答:id() 产妇乳汁分泌主要依赖于 答:哺乳时吸吮刺激 下列选项中,属于"路径面板"中的工具按钮的是 答:用前景色填充路径 用画 ...

最新文章

  1. rmd文件怎么转换html文件,提取.Rmd文件的html依赖项(包含htmlwidgets)
  2. html 页面宽度和背景颜色,CSS:设置背景颜色为窗口宽度的50%
  3. 从ADAS到无人驾驶 关键技术有哪些
  4. 运行Google CTemplate首页的例子遇到_CrtIsValidHeapPointer异常
  5. git-从入门到熟悉
  6. 计算机考试报名无法弹出支付界面,教资报名支付页面不弹出怎么办 2021教师资格证报名入口网址...
  7. 毕业后,她用1年时间拿下了30W年薪的阿里数据分析岗
  8. c语言程序学生档案管理系统,C语言 班级档案管理系统实现
  9. 计算机网络原理-计算题汇总
  10. mysql 求和_mysql分组求和
  11. windows 8 下五笔98版和新世纪版的解决方案
  12. android 自动发短信的代码,Android点击按钮时自动发送短信
  13. 谷歌放弃了IE6/The Google phasing out support for IE6.0
  14. 艾盟赢销浅谈:CRM的本质和它的未来十年
  15. java怎么弹出页面_java怎么样实现弹出窗口
  16. Ubuntu18.04安装Nvidia显卡驱动教程
  17. signature=3cb79ad68e1de6fcae23aede975d0e4e,考研二外法语易错题汇总
  18. 082为什么不是c语言合理常量,082高级语言程序设计课件@北工大第2讲C语言的基本控制.pdf_人人文库网...
  19. 为什么索引不支持模糊查询_美团王兴:淘宝为什么不支持微信支付?
  20. 图示数学之: 克莱因瓶之谜

热门文章

  1. 服务器装系统步骤图解win7,win7安装系统图解教程
  2. 新型能力的分解与组合
  3. vdi转vmdk VirtualBox与VMware硬盘格式转换及使用方法
  4. Ansible之Inventory定义
  5. 小学期Python面向对象实践-2 # Python # Cilay
  6. 贝壳云P1刷机记录(5.10内核Armbian)
  7. FSD062服务器电源维修,电磁炉开关电源FSD200维修经验
  8. 微博长图快速排版生成工具
  9. 安全狗下一代网站防篡改产品全面支持容器防篡改
  10. Leetcode 368. Largest Divisible Subset