栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python基础语法 - 文件操作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python基础语法 - 文件操作

python基础语法 - 文件操作 1.数据持久化(数据本地化)

程序中的数据默认是保存在运行内存中的,保存在运行内存中的数据,在程序运行结束后,会被自动销毁。保存在硬盘、磁盘中的数据在程序结束后不会销毁。

数据持久化就是将数据以文件为单位保存在硬盘中。

  • 常见数据持久化的工具
    1. 数据库文件(.db .sqlite .plist .json .txt)
    2. Excel文件;
  1. 打开文件:

    open(文件路径, 打开方式, encoding=文件编码方式)

    with open(文件路径, 打开方式)

    • 文件路径:字符串,确定需要打开的是哪个文件

      1. 绝对路径:从系统根目录开始,写文件在计算机中的全路径。
      2. 相对路径:用 . 表示当前目录,用 … 表示当前目录的上层目录。
    • 打开方式:字符串;给打开方式赋值的时候需要再两组值中每一组选一个组合。

      1. 决定打开文件读写权限;‘r’ 只读,‘w’ 只写,并清空原文件,‘a’ 只写,并在文件结尾追加

      2. 决定读写的数据类型是字符串还是二进制(默认是’t’);‘b’ 二进制 ,‘t’ 字符串

        如果以只读方式打开不存在的文件程序会报错,如果以只写方式打开不存在的文件程序自动创建不存在的文件

    • encoding 文本文件的编码方式

      如果是带b方式打开的文件,都不能给encoding赋值。

      如果打开文件的时候设置的编码方式和文件本身的编码方式不同,就会报编码错误。常用的编码方式是 ‘utf-8’ 。

  2. 操作文件:

    • 读:文件对象.read()

      ​ 文件对象.seek(0)

      ​ 文件对象.readline()

    • 写:文件对象.write(内容)

  3. 关闭文件:文件对象.close()

  4. 数据持久化的方法

    1. 确定需要持久化的数据
    2. 创建文件保存数据(确定需要持久化的数据的初始值)
    3. 程序中需要数据的时候从文件中读数据
    4. 数据如果发生改变,要将最新的数据写入到文件中
  5. print的特别用法:创建文件将数据写入指定文件中。

    with open('文件名.文件类型', 'wt/b') as file:
    	print(数据, file=file) 
    

    注:

    1. 根据数据类型的不同选择不同的文件类型;
    2. 根据数据类型选择 ‘t’ 或 ‘b’;
    3. 当数据不是字符串或者二进制时需要进行转化。
    # 将100以内的素数输出到一个文件中
    
    
    def is_prime(num: int) -> bool:
        '''
        判断一个正整数是不是一个质数
        :param num: 正整数
        :return: 质数返回Ture,否则返回False
        '''
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                return False
        return True
    
    
    with open('prime.txt', 'w') as file:
        for n in range(2, 100):
            if is_prime(n):
                print(str(n), file=file)
    
2.对象的序列化与反序列化
  • 序列化:把一个对象(字典、列表等)变成字符串(string)或字节串(bytes)

  • json模块:Javascript Objective Notation ,Javascript语言创建对象的字面量语法

    因为是纯文本,所以这种数据格式非常适合在两个系统(尤其是异构系统)之间传输数据,所以现在更多的时候是把它当做一种数据交换格式。

    语法:

    # 写法1
    json.dumps(变量)
    # 写法2
    json.dump(变量, fp=文件名)
    
    import json
    person = {
        'name': '骆昊',
        'age': 41,
        'sex': True,
        'friends': ['赵云', '马超', '辛弃疾'],
        'car': {
            'brand': 'QQ',
            'max_speed': 120
        }
    }
    with open('person.txt', 'w') as file:
        file.write(json.dumps(person))   # ----> 写法1
        print(json.dumps(person), file=file)   # ----> 写法2
        json.dump(person, fp=file)   # ---> 写法3
    

    注:dumps只能将数据转换成字符串,dump在转换的同时能够写入文件

  • pickle模块:序列化时将对象转化成字节串(二进制),只有Python能读出

    import pickle
    
    with open('person.bat', 'wb') as file:
        pickle.dump(person, file=file)
    
  • 反序列化:从字符串或字节串中还原出一个对象(字典、列表等)

  • json反序列化

    import json
    with open('person.txt', 'r') as file:
    
        # 写法一:
        content = file.read()
        obj = json.loads(content)
        
        # 写法二:
        obj = json.load(fp=file)
        print(obj)
    
  • pickle反序列化

    import pickle
    with open('person.bat', 'rb') as file:
        obj = pickle.load(file=file)
        print(obj)
    
3.联网获取数据
  • URL:统一资源定位符,能够唯一标识一个(网络)资源的符号

    写法:协议://用户名:口令@域名或IP地址:端口/路径1/路径2/资源名称

  • URI:统一资源标识符

  • pip:包管理工具

    Python中三方库操作:

    1. 查找三方库:pip search 库名
    2. 安装三方库:pip install 库名
    3. 卸载三方库:pip uninstall 库名
    4. 更新三方库:pip install -u 库名
  • 网络协议:通过网络进行通信的双方要遵守的规范和标准

  • HTTP(S):超文本传输协议

  • 联网获取数据语法

    import requests
    变量 = requests.get(url=域名, params={需要的参数})
    
    # 通过聚合数据api接口获取数据
    # 输入星座、日期,获得星座运势
    consName = input('请输入星座:')
    day = input('输入日期:')
    fortune = requests.get(url='http://web.juhe.cn/constellation/getAll',
                           params={'consName': consName,
                                   'type': day,
                                   'key': '30084c5a4a5099bc270e3c1e7008d948'
                                   }
                           )
    print(fortune.text)
    with open('fortune.text', 'wb') as file:
        file.write(fortune.content)
    
4.创建工作簿保存数据方法
  • openpyxl三方库可以创建一个Excel工作簿,并通过相应函数将数据写入工作簿中。

    语法:

    import openpyxl
    
    # 创建一个Excel工作簿
    workbook = openpyxl.Workbook()
    # 获取默认的工作表
    sheet = workbook.active
    # 添加表头
    sheet.append(('数据名1', '数据名2', '数据名3', '数据名4'. ...))
    # 添加列信息
    sheet.append((数据1, 数据2, 数据3, 数据4, ...))
    # 在指定行、列添加数据
    sheet.cell(行数, 列数, 数据)
    # 保存工作簿
    workbook.save('工作簿名.xlsx')
    
    # 通过天行数据获取今日头条新闻数据100条,保存到文件中
    
    import requests   # 调用requests模块
    import openpyxl   # 调用openpyxl模块
    from datetime import datetime   # 调用datetime模块
    
    # 创建工作表,并添加表头
    news = openpyxl.Workbook()
    sheet = news.active
    sheet.append(('title', 'url', 'source'))
    # 通过api接口获取今日头条新闻数据100条
    for page in range(1, 6):
        resp = requests.get(url='https://api.tianapi.com/topnews/index',
                            params={
                                'key': 'e8c5524dd2a365f20908ced735f8e480',
                                'page': 1,
                                'num': 20
                            }
                            )
        # 将获取的数据持久化
        print(resp.text)
        with open('resp.text', 'wb') as file:
            file.write(resp.content)
    
        result = resp.json()
    
        # 将数据保存到工作表
        for new_dict in result['newslist']:
            title, url, source = new_dict['title'], new_dict['url'], new_dict['source']
            sheet.append((title, url, source))
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/313729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号