当前位置: 首页 > news >正文

门户网站 jsp沈阳科技网站建设

门户网站 jsp,沈阳科技网站建设,app定制版,家居设计网站模板文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景#xff0c;而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词#xff0c;可能需要先科普一下关于文件系统的知识#xff0c;但是这里我们并不浪费笔墨介绍这个概念#xff0c;请大…文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词可能需要先科普一下关于文件系统的知识但是这里我们并不浪费笔墨介绍这个概念请大家自行通过维基百科进行了解。 在Python中实现文件的读写操作其实非常简单通过Python内置的open函数我们可以指定文件名、操作模式、编码信息等来获得操作文件的对象接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件字符文件还是二进制文件以及做什么样的操作读、写还是追加具体的如下表所示。 操作模式具体含义r读取 默认w写入会先截断之前的内容x写入如果文件已经存在会产生异常a追加将内容写入到已有文件的末尾b二进制模式t文本模式默认更新既可以读又可以写 读写文本文件 读取文本文件时需要在使用open函数时指定好带路径的文件名可以使用相对路径或绝对路径并将文件模式设置为r如果不指定默认值也是r然后通过encoding参数指定编码如果不指定默认值是None那么在读取文件时使用的是操作系统默认的编码如果不能保证保存文件时使用的编码方式与encoding参数指定的编码方式是一致的那么就可能因无法解码字符而导致读取失败。下面的例子演示了如何读取一个纯文本文件。 def main():f open(致橡树.txt, r, encodingutf-8)print(f.read())f.close()if __name__ __main__:main()请注意上面的代码如果open函数指定的文件并不存在或者无法打开那么将引发异常状况导致程序崩溃。为了让代码有一定的健壮性和容错性我们可以使用Python的异常机制对可能在运行时发生状况的代码进行适当的处理如下所示。 def main():f Nonetry:f open(致橡树.txt, r, encodingutf-8)print(f.read())except FileNotFoundError:print(无法打开指定的文件!)except LookupError:print(指定了未知的编码!)except UnicodeDecodeError:print(读取文件时解码错误!)finally:if f:f.close()if __name__ __main__:main()在Python中我们可以将那些在运行时可能会出现状况的代码放在try代码块中在try代码块的后面可以跟上一个或多个except来捕获可能出现的异常状况。例如在上面读取文件的过程中文件找不到会引发FileNotFoundError指定了未知的编码会引发LookupError而如果读取文件时无法按指定方式解码会引发UnicodeDecodeError我们在try后面跟上了三个except分别处理这三种不同的异常状况。最后我们使用finally代码块来关闭打开的文件释放掉程序中获取的外部资源由于finally块的代码不论程序正常还是异常都会执行到甚至是调用了sys模块的exit函数退出Python环境finally块都会被执行因为exit函数实质上是引发了SystemExit异常因此我们通常把finally块称为“总是执行代码块”它最适合用来做释放外部资源的操作。如果不愿意在finally代码块中关闭文件对象释放资源也可以使用上下文语法通过with关键字指定文件对象的上下文环境并在离开上下文环境时自动释放文件资源代码如下所示。 def main():try:with open(致橡树.txt, r, encodingutf-8) as f:print(f.read())except FileNotFoundError:print(无法打开指定的文件!)except LookupError:print(指定了未知的编码!)except UnicodeDecodeError:print(读取文件时解码错误!)if __name__ __main__:main()除了使用文件对象的read方法读取文件之外还可以使用for-in循环逐行读取或者用readlines方法将文件按行读取到一个列表容器中代码如下所示。 import timedef main():# 一次性读取整个文件内容with open(致橡树.txt, r, encodingutf-8) as f:print(f.read())# 通过for-in循环逐行读取with open(致橡树.txt, moder) as f:for line in f:print(line, end)time.sleep(0.5)print()# 读取文件按行读取到列表中with open(致橡树.txt) as f:lines f.readlines()print(lines)if __name__ __main__:main()要将文本信息写入文件文件也非常简单在使用open函数时指定好文件名并将文件模式设置为w即可。注意如果需要对文件内容进行追加式写入应该将模式设置为a。如果要写入的文件不存在会自动创建文件而不是引发异常。下面的例子演示了如何将1-9999之间的素数分别写入三个文件中1-99之间的素数保存在a.txt中100-999之间的素数保存在b.txt中1000-9999之间的素数保存在c.txt中。 from math import sqrtdef is_prime(n):判断素数的函数assert n 0for factor in range(2, int(sqrt(n)) 1):if n % factor 0:return Falsereturn True if n ! 1 else Falsedef main():filenames (a.txt, b.txt, c.txt)fs_list []try:for filename in filenames:fs_list.append(open(filename, w, encodingutf-8))for number in range(1, 10000):if is_prime(number):if number 100:fs_list[0].write(str(number) \n)elif number 1000:fs_list[1].write(str(number) \n)else:fs_list[2].write(str(number) \n)except IOError as ex:print(ex)print(写文件时发生错误!)finally:for fs in fs_list:fs.close()print(操作完成!)if __name__ __main__:main()读写二进制文件 知道了如何读写文本文件要读写二进制文件也就很简单了下面的代码实现了复制图片文件的功能。 def main():try:with open(guido.jpg, rb) as fs1:data fs1.read()print(type(data)) # class byteswith open(吉多.jpg, wb) as fs2:fs2.write(data)except FileNotFoundError as e:print(指定的文件无法打开.)except IOError as e:print(读写文件时出现错误.)print(程序执行结束.)if __name__ __main__:main()读写JSON文件 通过上面的讲解我们已经知道如何将文本数据和二进制数据保存到文件中那么这里还有一个问题如果希望把一个列表或者一个字典中的数据保存到文件中又该怎么做呢答案是将数据以JSON格式进行保存。JSON是“JavaScript Object Notation”的缩写它本来是JavaScript语言中创建对象的一种字面量语法现在已经被广泛的应用于跨平台跨语言的数据交换原因很简单因为JSON也是纯文本任何系统任何编程语言处理纯文本都是没有问题的。目前JSON基本上已经取代了XML作为异构系统间交换数据的事实标准。关于JSON的知识更多的可以参考JSON的官方网站从这个网站也可以了解到每种语言处理JSON数据格式可以使用的工具或三方库下面是一个JSON的简单例子。 {name: YJW,age: 38,qq: 957658,friends: [王大锤, 白元芳],cars: [{brand: BYD, max_speed: 180},{brand: Audi, max_speed: 280},{brand: Benz, max_speed: 320}] }可能大家已经注意到了上面的JSON跟Python中的字典其实是一样一样的事实上JSON的数据类型和Python的数据类型是很容易找到对应关系的如下面两张表所示。 JSONPythonobjectdictarrayliststringstrnumber (int / real)int / floattrue / falseTrue / FalsenullNone PythonJSONdictobjectlist, tuplearraystrstringint, float, int- float-derived EnumsnumberTrue / Falsetrue / falseNonenull 我们使用Python中的json模块就可以将字典或列表以JSON格式保存到文件中代码如下所示。 import jsondef main():mydict {name: YJW,age: 38,qq: 957658,friends: [王大锤, 白元芳],cars: [{brand: BYD, max_speed: 180},{brand: Audi, max_speed: 280},{brand: Benz, max_speed: 320}]}try:with open(data.json, w, encodingutf-8) as fs:json.dump(mydict, fs)except IOError as e:print(e)print(保存数据完成!)if __name__ __main__:main()json模块主要有四个比较重要的函数分别是 dump - 将Python对象按照JSON格式序列化到文件中dumps - 将Python对象处理成JSON格式的字符串load - 将文件中的JSON数据反序列化成对象loads - 将字符串的内容反序列化成Python对象 这里出现了两个概念一个叫序列化一个叫反序列化。自由的百科全书维基百科上对这两个概念是这样解释的“序列化serialization在计算机科学的数据处理中是指将数据结构或对象状态转换为可以存储或传输的形式这样在需要的时候能够恢复到原先的状态而且通过序列化的数据重新获取字节时可以利用这些字节来产生原始对象的副本拷贝。与这个过程相反的动作即从一系列字节中提取数据结构的操作就是反序列化deserialization”。 目前绝大多数网络数据服务或称之为网络API都是基于HTTP协议提供JSON格式的数据关于HTTP协议的相关知识可以看看阮一峰老师的《HTTP协议入门》如果想了解国内的网络数据服务可以看看聚合数据和阿凡达数据等网站国外的可以看看{API}Search网站。下面的例子演示了如何使用requests模块封装得足够好的第三方网络访问模块访问网络API获取国内新闻如何通过json模块解析JSON数据并显示新闻标题这个例子使用了天行数据提供的国内新闻数据接口其中的APIKey需要自己到该网站申请。 import requests import jsondef main():resp requests.get(http://api.tianapi.com/guonei/?keyAPIKeynum10)data_model json.loads(resp.text)for news in data_model[newslist]:print(news[title])if __name__ __main__:main()在Python中要实现序列化和反序列化除了使用json模块之外还可以使用pickle和shelve模块但是这两个模块是使用特有的序列化协议来序列化数据因此序列化后的数据只能被Python识别。关于这两个模块的相关知识可以自己看看网络上的资料。
http://www.w-s-a.com/news/104364/

相关文章:

  • 网站建设期末试卷大气简洁网站
  • 电子商务网站建设报告范文单位做网站怎么做
  • 优质的外国网站qq小程序在哪里打开
  • 商务网站建设与推广实训报告免费素材网站无水印
  • 外贸站seoapp开发公司历程概述
  • 沈阳网站推广¥做下拉去118cr陶瓷企业 瓷砖地板公司网站建设
  • 医院网站官方微信精神文明建设我做服装设计师的 求推荐资源网站
  • 微信网站建设需要那些资料昆明cms模板建站
  • 安庆网站建设兼职中企动力是500强吗
  • 网站排名优化技巧基于网站的网络营销方法有哪些
  • 摄影素材网站做知识问答的网站
  • 中小企业网站建设济南兴田德润电话门店管理系统软件排行
  • 昆明工程建设信息网站柳州网站建设公司哪家好
  • 如何分析网站关键词北京门户网站网址
  • 做网站与做游戏那个好网站域名怎么起
  • 有没有做cad单的网站银行网站建设方案视频
  • 和各大网站做视频的工作高校网站群管理系统
  • 中国建设人才服务信息网是正规网站怎么注销自己名下的公司
  • 网站开发新型技术那些网站做任务领q币
  • 海口手机网站建设wordpress微支付宝
  • 做公司网站需要几天深圳自定义网站开发
  • 做网站学多长时间可以学会推广软件公司
  • 网络网站设计培训长沙建站模板大全
  • 站群搭建移动端处理器天梯图
  • 岳池发展建设集团有限公司门户网站湛江seo咨询
  • 手机网站工具关键词排名是什么意思
  • 游民星空是谁做的网站沈阳网站托管公司
  • 做网站搭建需要什么人vs2017移动网站开发
  • 购物网站开发需要什么技术怎么查看网站是否备案
  • 学做电商那个网站好网站建设投票主题