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

心理服务网站建设内容wordpress网站重定向循环

心理服务网站建设内容,wordpress网站重定向循环,免费网站代理访问,网站建设为什么不清晰文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景#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: 骆昊,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: 骆昊,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识别。关于这两个模块的相关知识可以自己看看网络上的资料。另外如果要了解更多的关于Python异常机制的知识可以看看segmentfault上面的文章《总结Python中的异常处理》这篇文章不仅介绍了Python中异常机制的使用还总结了一系列的最佳实践很值得一读。
http://www.zqtcl.cn/news/21751/

相关文章:

  • 万网网站备份php电商网站开发流程
  • 免费网站域名盐城市建设工程网站
  • 北京网站优化服务商推广普通话活动总结
  • 九江专业的企业网站建设公司网站建设买服务器价格
  • 服务器做jsp网站教程优化建立生育支持政策体系
  • 58同城建设银行招聘网站江苏省建设考试信息管理系统网站
  • php网站连接数据库教程关于旅行社网站规划建设方案书
  • 网站建设程序结构做一个电商网站多少钱
  • 网贷网站建设ps里面怎么做网站对联广告
  • 专业模板网站制作衡水做wap网站价格
  • 网站空间最便宜网站建设教学设计
  • 河北邢台手机网站建设erp登录入口
  • 企业如何建官方网站做门户网站怎么赚钱
  • 2013 中国网站建设市场 pdf成都网站运营维护厂家
  • 郑州网站模板专注番禺网站优化
  • 在网站上可以做哪些互动活动义务 网站建设
  • 外卖网站那家做的好ueditor 上传wordpress
  • 淘客导航网站开发网站服务器的重要性
  • 上海网站关键词优化国内购物平台
  • 公司网站制作专业公司泰州做房产的网站
  • 成都百度推广优化创意十堰的网络优化公司
  • 网站源码在哪看北京十大装饰公司排名有哪些
  • ftp工具下载网站源码教程自建站电商外贸
  • 58同城盐城网站建设上海网站设
  • 邯郸现代建设集团网站网站推广方式百度云
  • 腾讯云域名注册官网网站做优化有什么好处
  • 职业教育网站建设方案企业年金离职的时候怎么办
  • 成都高新区国土规划建设局网站镇江市建设工程质量监督局网站
  • 优惠券网站怎样做北京社保网站做社保增减员
  • dw软件做二级连接网站wordpress 网页 登录