《python语言程序设计基础》—— 第7章
文件和数据格式化
打开文件
文件概述:文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容。概念上,文件是数据的集合和抽象。类似地,函数是程序的集合和抽象。用文件形式组织和表达数据更有效也更为灵活。问阿金包括两种类型:文本文件和二进制文件。
二进制文件直接由比特0和比特1组成,没有统一字符编码,问阿金内部数据的组织格式与文件用途有关。二进制是信息按照非字符但特定格式形成的文件,例如,png格式的图片问阿金、avi格式的视频文件。二进制文件和文本文件最主要的区别在于是否有统一的字符编码。二进制文件没有同意字符编码,只能当做字节流,而不能看做是字符串。
使用open()便可以打开一个文件,并实现该文件与一个程序变量的关联:变量名 = open(文件名,打开模式)
文件的打开模式 | 含义 |
---|---|
‘r’ | 只读模式,如果文件不存在,返回异常FileNotFoundError,默认值 |
'w | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
‘x’ | 创建写模式,文件不存在则创建,存在则返回异常FileExistsError |
‘a’ | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
‘b’ | 二进制文件模式 |
‘t’ | 文本文件模式,默认值 |
‘+’ | 与r/w/x/a一起使用,在原功能基础上增加同时读写功能 |
可以通过上面不同模式的组合实现对文件打开方式的控制。
读写文件
PIL库的使用
PIL库支持图像存储、显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。
PIL库主要可以实现图像归档和图像处理两方面功能需求。
(1)图像归档:对图像进行批处理、生成图像预览、图像格式转换等。
(2)图像处理:图像基本处理、像素处理、颜色处理等。
根据功能不同,PIL库包括21个与图片相关的类,这些类可以看做是子库或者PIL库的模块,子库列表如下:
Image,ImageChops,ImageColor,ImageCrakeCode,ImageDraw,ImageEnhance,ImageFile,ImageFileIO,ImageFilter,ImageFont,…
Image
在PIL中,任何一个图像都可以用Image对象表示。
方法 | 描述 |
---|---|
Image.open(filename) | 根据参数加载图像文件 |
Image.new(mode,size,color) | 根据给定参数创建一个新的图像 |
Image.open(StringIO.StringIO(buffer)) | 从字符串中获取图像 |
Image.frombytes(mode,size,data) | 根据像素点data创建图像 |
Image.verify() | 对图像文件完整性进行检查,返回异常 |
加载一个图片的方式:
from PIL import Image
im = Image.open(文件名)
print(im.format, im.size, im.mode)
##可以得到已经加载的图像文件的属性
Image类中4个处理图片的常用属性:
属性 | 描述 |
---|---|
Image.format | 标识图像格式或者来源,如果图像不是从文件读取,值为None |
Image.mode | 图像的色彩模式,“L”标识灰度图像,“RGB”是真彩色图像,“CMYK”是出版图像 |
Image.size | 图像宽度和高度,单位是像素,返回值是二元元组 |
Image.palette | 调色板属性,返回一个ImagePalette类型 |
Image还能读取序列类图像文件,包括GIF、FLI、FLC、TIFF等格式文件。open()方法打开一个图像时自动加载序列中的第一帧,使用seek()和tell()方法可以在不同帧之间移动。
方法 | 描述 |
---|---|
Image.seek(frame) | 跳转并返回图像中的指定帧 |
Image.tell() | 返回当前帧的序号 |
方法 | 描述 |
---|---|
Image.save(filename, format) | (主要用于保存文件到硬盘)将图像保存为filename文件名,format是图片格式 |
Image.convert(mode) | 使用不同的参数,转换图像为新的模式 |
Image.thumbnail(size) | 创建图像的缩略图,size是缩略图尺寸的二元元组 |
方法 | 描述 |
---|---|
Image.resize(size) | 按size大小调整图像,生成副本 |
Image.rotate(angle) | 按angle(逆时针方法)旋转图像,生成副本 |
ImageFilter类和ImageEnhance类
方法表示 | 描述 |
---|---|
ImageFilter.BLUR | 图像的模糊效果 |
ImageFilter.CONTOUR | 图像的轮廓效果 |
ImageFilter.DETAIL | 图像的细节效果 |
ImageFilter.EDGE_ENHABCE | 图像的边界加强效果 |
ImageFilter.EDGE_ENHABCE_MORE | 图像的阈值边界加强效果 |
ImageFilter.EMBOSS | 图像的浮雕效果 |
ImageFilter.FIND_EDGES | 图像的边界效果 |
ImageFilter.SMOOTH | 图像的平滑效果 |
ImageFilter.SMOOTH_MORE | 图像的阈值平滑效果 |
ImageFilter.SHARPEN | 图像的锐化效果 |
太多函数了,这可记不住!用的时候现查吧!
方法 | 描述 |
---|---|
ImageEnhance.enhance(factor) | 对选择属性的数值增强factor倍 |
ImageEnhance.Color(im) | 调整图像的颜色平衡 |
ImageEnhance.Contrast(im) | 调整图像的对比度 |
ImageEnhance.Brightness(im) | |
ImageEnhance.Sharpness(im) | 调整图像的锐度 |
json库
json库主要包括两类函数:操作类函数和解析类函数。操作类函数主要完成外部JSON格式和程序内部数据类型之间的转换功能;解析类函数主要用于解析键值对内容。json格式包括对象和数组,用大括号{}和方括号[]表示,分别对应键值对的组合关系和对等关系。使用json库时需要注意json格式的“对象”和“数组”概念与Python原因中“字典”和“列表”的区别和联系。一般来说,JSON格式的对象将被json库解析为字典,JSON格式的数组将被解析为列表。
《python语言程序设计基础》—— 第7章相关推荐
- 《Unity3D网络游戏实战》第7章
<Unity3D网络游戏实战>第7章 服务端架构 总体架构 模块划分 游戏流程 Json编码解码 添加协议文件 引用System.web.Extensions 修改MsgBase类 测试 ...
- 【实战】Unity3d实战之Unity3d网络游戏实战篇(11):消息分发
Unity3d实战之Unity3d网络游戏实战篇(11):消息分发 学习书籍<Unity3d网络游戏实战> 罗培羽著 机械工业出版社 本文是作者在学习过程中遇到的认为值得记录的点,因此引用 ...
- 【实战】Unity3d实战之Unity3d网络游戏实战篇(9):协议
Unity3d实战之Unity3d网络游戏实战篇(9):协议 学习书籍<Unity3d网络游戏实战> 罗培羽著 机械工业出版社 本文是作者在学习过程中遇到的认为值得记录的点,因此引用的代码 ...
- Unity3D网络游戏实战——实践出真知:大乱斗游戏
前言 这一章是教我们做一个大乱斗游戏.但是书中的代码有些前后不一致导致运行错误,如果你也碰到了这样的情况,可以参考我的代码 我们要完成的主要有以下这些事 左键操控角色行走 右键操控角色攻击 受到攻击掉 ...
- Unity3D网络游戏实战——通用服务器框架
前言 网络游戏涉及客户端和服务端.服务端程序记录玩家数据,处理客户端发来的协议.本文就介绍一套通用客户端的实现. 该框架基于Select多路复用处理网络消息,具有粘包半包处理.心跳机制等功能,还是用M ...
- Unity3D网络游戏实战——网络游戏的开端:Echo
前言 虽然最爱单机游戏,但是和朋友一起玩联网游戏可以获得双倍快乐!所以开始学习网络游戏相关的知识啦 1.1藏在幕后的服务端 客户端和客户端之间通过服务端的消息转发进行通信. 为了支撑很多玩家,游戏服务 ...
- Unity3D网络游戏实战——通用客户端模块
前言 书中说的是搭建一套商业级的客户端网络模块,一次搭建长期使用. 本章主要是完善大乱斗游戏中的网络模块,解决粘包分包.完整发送数据.心跳机制.事件分发等功能 6.1网络模块设计 核心是静态类NetM ...
- Unity3D网络游戏实战——正确收发数据流
前言 本章主要介绍和实现怎样正确和高效地处理TCP数据(数据流).也解决了上一章我们遇到的一些问题 4.1TCP数据流 4.1.1系统缓冲区 收到对端数据时,操作系统会将数据存入到Socket的接收缓 ...
- Unity3D 网络游戏框架(一、网络基础)
1.套接字(Socket) 网络上两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为一个Socket.一个Socket包含了进行网络通信必须的五种信息:连接使用的协议.本地 ...
- Unity3D网络游戏0.1
一.网络游戏的架构 (1)网络游戏: 分为客户端和服务端两个部分,客户端程序运行在用户的电脑或手机上,服务端程序运行在游戏运营商的服务器上. 以下是一些典型的游戏客户端. ...
最新文章
- 程序员转型AI,这里有最全的机器学习介绍+应用实例
- alpha事后诸葛亮
- 深度学习的实用层面 —— 1.1 训练/开发/测试集
- (组合数学笔记)Pólya计数理论_Part.2_群及其性质
- 最为奇怪的程序语言的特性
- 小波变换和motion信号处理(二)
- 用DELPHI下载官方SVN中的示例原码
- ContextCapture与Pix4D生成正射影像并进行拼接修图(附航测练习数据下载)
- 教你用 Python 爬取 Baidu 文库全格式文档!
- 计算机组装与维护研究内容,计算机组装与维护论文大纲格式模板 计算机组装与维护论文提纲怎么写...
- mysql两张大表关联查询_关于mysql当中给数据量特别大的两个表做关联查询的时候解决查询速度很慢的解决方法...
- 入职阿里两年的工作总结
- raw格式(裸数据)格式文件读写
- 添加SearchView控件时飘红的问题
- android点亮屏幕软件,插亮屏幕Lite
- Vue 中实现Video视频不可快进
- Auto uninstaller 9.3.89下载安装教程,专治卸载不干净cad、修复等的问题
- 三菱GX works2的应用安装
- 一.软件使用与基础入门
- 外部 DTD: 无法读取外部 DTD ‘mybatis-generator-config_1_0.dtd‘, 因为 accessExternalDTD 属性设置的限制导致不允许
热门文章
- ERROR: Could not find a version that satisfies the requirement PIL (from versions: none)解决方案
- PMcenter集中监控平台丨多台精密空调集中监控方案
- 解决Android Studio运行编译时间久的最有效方案
- plt. bar添加数据标签
- 他是马化腾的偶像,拒绝过马云的应聘!如今劝年轻人躺平......
- java获取大疆无人机飞行数据包括:无人机名称、海拔高度、经纬度信息、起飞状态、电池电量、飞行时间、上升速度、前行速度等飞行数据
- emake-Linux学习20201017
- 软件测试面试“圣经”,金三银四知识点合集,轻松拿下7个Offer
- c++学习书籍推荐《Exceptional C++ Style》下载
- 常见词汇背后的故事(3)