### 读写文本文件 在使用`open`函数时指定好文件名并将文件模式设置为`'w'`即可。注意如果需要对文件内容进行追加式写入,应该将模式设置为`'a'` | JSON | Python | | ------------------- | ------------ | | object | dict | | array | list | | string | str | | number (int / real) | int / float | | true / false | True / False | | null | None | | Python | JSON | | -------------------------------------- | ------------ | | dict | object | | list, tuple | array | | str | string | | int, float, int- & float-derived Enums | number | | True / False | true / false | | None | null | json模块主要有四个比较重要的函数,分别是: - `dump` - 将Python对象按照JSON格式序列化到文件中 - `dumps` - 将Python对象处理成JSON格式的字符串 - `load` - 将文件中的JSON数据反序列化成对象 - `loads` - 将字符串的内容反序列化成Python对象 这里出现了两个概念,一个叫序列化,一个叫反序列化。自由的百科全书[维基百科](https://zh.wikipedia.org/)上对这两个概念是这样解释的:“序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换为可以存储或传输的形式,这样在需要的时候能够恢复到原先的状态,而且通过序列化的数据重新获取字节时,可以利用这些字节来产生原始对象的副本(拷贝)。与这个过程相反的动作,即从一系列字节中提取数据结构的操作,就是反序列化(deserialization)”。 目前绝大多数网络数据服务(或称之为网络API)都是基于[HTTP协议](https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE)提供JSON格式的数据,关于HTTP协议的相关知识,可以看看阮一峰老师的[《HTTP协议入门》](http://www.ruanyifeng.com/blog/2016/08/http.html),如果想了解国内的网络数据服务,可以看看[聚合数据](https://www.juhe.cn/)和[阿凡达数据](http://www.avatardata.cn/)等网站,国外的可以看看[{API}Search](http://apis.io/)网站。下面的例子演示了如何使用[requests](http://docs.python-requests.org/zh_CN/latest/)模块(封装得足够好的第三方网络访问模块)访问网络API获取国内新闻,如何通过json模块解析JSON数据并显示新闻标题,这个例子使用了[天行数据](https://www.tianapi.com/)提供的国内新闻数据接口,其中的APIKey需要自己到该网站申请。 ```Python import requests import json def main(): resp = requests.get('http://api.tianapi.com/guonei/?key=APIKey&num=10') data_model = json.loads(resp.text) for news in data_model['newslist']: print(news['title']) if __name__ == '__main__': main() ```