数据存储之文件存储

  • 文件存储

    • TXT文件存储

      # 爬取知乎上的热门话题,获取话题的问题、作者、答案,然后保存在TXT文本中
    •  1 import requests
       2 from pyquery import PyQuery
       3
       4 url = ‘https://www.zhihu.com/explore‘
       5 headers = {
       6     ‘User-Agent‘: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) ‘
       7                   ‘Chrome/58.0.3029.110 Safari/537.36‘
       8 }
       9 html = requests.get(url, headers=headers).text
      10 doc = PyQuery(html)
      11
      12 # 选择class="explore-tab"的内部class="feed-item"的所有节点,再遍历每一个元素(每个元素就是一个热门话题)
      13 items = doc(‘.explore-tab .feed-item‘).items()
      14
      15 for item in items:
      16     # 找到‘h2‘节点,获取知乎上热门话题的问题
      17     question = item.find(‘h2‘).text()
      18
      19     # 选择class="author-link-line"的所有节点,获取文本值
      20     author = item.find(‘.author-link-line‘).text()
      21
      22     # 找到属性值为content的节点,获取其内部文本值,再通过PyQuery()方法初始化获取文本信息
      23     answer = PyQuery(item.find(‘.content‘).html()).text()
      24
      25     file = open(‘explore.txt‘, ‘a‘, encoding=‘utf-8‘)
      26     file.write(‘\n‘.join([question, author, answer]))
      27     file.write(‘\n‘ + ‘=‘ * 50 + ‘\n‘)
      28     file.close()

      运行结果生成一个TXT文件

      其中涉及open()方法,具体查看open()官方文档

    • JSON文件存储

      • 读取JSON

        # 调用JSON库的loads()方法将JSON文本字符串转为JSON对象

         1 import json
         2
         3 string = ‘‘‘
         4 [
         5     {
         6         "name": "Lee Hua",
         7         "gender": "male",
         8         "birthday": "1997-10-25"
         9     },
        10     {
        11         "name": "Li Hua",
        12         "gender": "female",
        13         "birthday": "1998-10-25"
        14     }
        15 ]
        16 ‘‘‘
        17
        18 print(type(string), string, sep=‘\n‘)
        19
        20 data = json.loads(string)
        21 print(type(data), data, sep=‘\n‘)
        22
        23
        24 # 输出:
        25 <class ‘str‘>
        26
        27 [
        28     {
        29         "name": "Lee Hua",
        30         "gender": "male",
        31         "birthday": "1997-10-25"
        32     },
        33     {
        34         "name": "Li Hua",
        35         "gender": "female",
        36         "birthday": "1998-10-25"
        37     }
        38 ]
        39
        40 <class ‘list‘>
        41 [{‘name‘: ‘Lee Hua‘, ‘gender‘: ‘male‘, ‘birthday‘: ‘1997-10-25‘}, {‘name‘: ‘Li Hua‘, ‘gender‘: ‘female‘, ‘birthday‘: ‘1998-10-25‘}]

        # JSON数据需要用双引号来包围,不能用单引号。
      • 输出JSON

        # 通过dumps()方法将JSON对象转为文本字符串。

         1 import json
         2
         3 data = [
         4     {
         5         "name": "Lee Hua",
         6         "gender": "male",
         7         "birthday": "1997-10-25"
         8     },
         9     {
        10         "name": "李 华",
        11         "gender": "男",
        12         "birthday": "1998-10-25"
        13     }
        14 ]
        15
        16
        17 with open(‘data.json‘, ‘w‘) as file:
        18     file.write(json.dumps(data, indent=2))
        19
        20
        21 # 如果不存在data.json文件,运行结果则生成一个名为data.json的文件
        22
        23 # data.json文件内写入的内容:
        24 [
        25   {
        26     "name": "Lee Hua",
        27     "gender": "male",
        28     "birthday": "1997-10-25"
        29   },
        30   {
        31     "name": "\u674e \u534e",
        32     "gender": "\u7537",
        33     "birthday": "1998-10-25"
        34   }
        35 ]
        36
        37
        38 # file.write(json.dumps(data, indent=2))中, indent参数代表缩进字符个数。
        39 # 如果想要再写入的data.json文件中显示写入的中文,那么file.write(json.dumps(data, indent=2, ensure_ascii=False))即可

    • CSV文件存储

       1 import csv
       2
       3 with open(‘data.csv‘, ‘w‘) as csvfile:
       4     writer = csv.writer(csvfile)
       5     writer.writerow([‘id‘, ‘name‘, ‘age‘])
       6     writer.writerow([‘10001‘, ‘Li Hua‘, ‘18‘])
       7     writer.writerow([‘10002‘, ‘Lee Hua‘, ‘19‘])
       8     writer.writerow([‘10003‘, ‘liyihua‘, ‘20‘])
       9 # 上面的内容也可以这样写入
      10 #    writer = csv.writer(csvfile)
      11 #    writer.writerow([‘id‘, ‘name‘, ‘age‘])
      12 #    writer.writerow(
      13 #        [
      14 #            [‘10001‘, ‘Li Hua‘, ‘18‘],
      15 #            [‘10002‘, ‘Lee Hua‘, ‘19‘],
      16 #            [‘10003‘, ‘liyihua‘, ‘20‘]
      17 #        ]
      18 #    )
      19
      20 # 上面内容还可以这样写入
      21 #    field_names = [‘id‘, ‘name‘, ‘age‘]
      22 #    writer = csv.DictWriter(csvfile, fieldnames=field_names)
      23 #    writer.writerow({‘id‘: ‘10001‘, ‘name‘: ‘Li Hua‘, ‘age‘: ‘18‘})
      24 #    writer.writerow({‘id‘: ‘10002‘, ‘name‘: ‘Lee Hua‘, ‘age‘: ‘19‘})
      25 #    writer.writerow({‘id‘: ‘10003‘, ‘name‘: ‘liyihua‘, ‘age‘: ‘20‘})
      26
      27
      28
      29 # 运行结果:生成一个data.csv文件,文件内容如下
      30 id,name,age
      31 10001,Li Hua,18
      32 10002,Lee Hua,19
      33 10003,liyihua,20
      34 # 想修改行与列之间的分隔符,可以传入参数delimiter参数,writer = csv.writer(csvfile, delimiter=‘分隔符‘)

      csv.writer()和csv.DictWriter()方法

      # 如果想要追加写入的话,可以修改文件的打开模式,即将open()函数的第二个参数改成a。如:open(‘file‘, ‘a‘)# 写入时有时候会遇到编码错误问题,此时只要给open()函数指定编码形式就可以了。如:open(‘file‘, ‘r‘, encoding=‘utf-8‘)

原文地址:https://www.cnblogs.com/liyihua/p/11173584.html

时间: 2024-10-04 18:48:11

数据存储之文件存储的相关文章

块存储、文件存储、对象存储

知乎上看到的 [块存储] 典型设备:磁盘阵列,硬盘 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘.做 Raid.或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘.(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的 5个物理硬盘意义完全不同了.例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,所以逻辑硬盘A是由多个 物理硬盘逻辑虚构出

磁盘工作原理、文件系统及i节点、块存储、文件存储、对象存储、DAS、NAS、还有SAN

(一)磁盘工作原理 一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标.型号.序列号.生产日期.容量.参数和主从设置方法等.这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义. 硬盘主要由盘体.控制电路板和接口部件等组成,如图1-1所示.盘体是一个密封的腔体.硬盘的内部结构通常是指盘体的内部结构:控制电路板上主要有 硬盘BIOS.硬盘缓存(即CACHE)和主控制芯片等单元,如图1-2所示:硬盘接口包括电源插座.数据接口和主.从跳线,如图1-3所示. 图1-1 硬盘的外观 图1-

块存储、文件存储和对象存储

一.块存储 典型设备:磁盘阵列,硬盘 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘.做Raid.或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘.(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的5个物理硬盘意义完全不同了.例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,所以逻辑硬盘A是由多个物理硬盘逻辑虚构出来的硬盘.) 接着块

对象存储与块存储、文件存储等对比

看到 一篇文档, 讲 对象存储, 好奇,搜索文章,摘抄,学习记录 ! 背景: 传统存储在面对海量非结构化数据时,在存储.分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结构化内容设计或优化.成本过高.并非PB级的扩展.不支持永远在线.专有的一体机设备等等,非结构化数据以每年60%-80%的速率增长,从而可扩展性变成了最迫切的需求. 传统存储在面对海量非结构化数据时,在存储.分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结构化内容设计或优化.成本过高.并非

块存储、文件存储、对象存储意义及差异

关于块存储.文件存储.对象存储方面的知识在知乎上看到了个很好的解答:https://www.zhihu.com/question/21536660 通俗易懂,查了些资料做了详细的补充. 块存储 典型设备:磁盘阵列.硬盘 块存储主要是将裸磁盘空间整个映射给主机使用的. 就是说例如:磁盘阵列里面有5块硬盘,然后可以通过划逻辑盘.做Raid.或者LVM等方式逻辑划分出N个逻辑的硬盘.但是逻辑盘和物理盘是两个完全不同的概念.假设每个硬盘100G,共有5个硬盘,划分为逻辑盘也为5个,每个100G,但是这5

Android数据存储之文件存储

首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. public void save()    {        try {            FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);            outStre

Android学习——数据存储之文件存储

将数据存储到文件中并读取数据 1.新建FilePersistenceTest项目,并修改activity_main.xml中的代码,如下:(只加入了EditText,用于输入文本内容,不管输入什么按下back键就丢失,我们要做的是数据被回收之前,将它存储在文件中) 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.a

安卓数据持久化:文件存储、SharedPreferences存储以及数据库存储

Android系统中主要提供了三种方式用于简单的实现数据持久化功能: 文件存储(手机自带的内存).SharedPreferences存储以及数据库存储 当然还可以用sd卡存储 读入写出 下面是疯狂java讲义中的关于IO流的一些补充,回忆一下 1,文件存储 手机自带的内存,只能供当前应用程序访问,其他应用程序访问不了,程序卸载这些数据也会随着消失 原理: 基本是先获取一个文件的输出流,然后把信息write进去,最后关闭流 a,通过上下文类context的openFileOutput()方法获得一

android 开发-数据存储之文件存储

android的文件存储是通过android的文件系统对数据进行临时的保存操作,并不是持久化数据,例如网络上下载某些图片.音频.视频文件等.如缓存文件将会在清理应用缓存的时候被清除,或者是应用卸载的时候缓存文件或内部文件将会被清除. 以下是开发学习中所写的示例代码,以供日后查阅: xml: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="