第十二天:文件操作、json、数据持久化

一、文件操作

数据的存储

'''
1.1 数据存储的特点:
计算机中的内存分为硬盘和运行内存:
硬盘:是用来存储文件的,除非手动删除或者硬盘出问题,否则存储在硬盘中的文件会一直存在;
运行内存:是用来存储程序运行过程中产生的数据,当程序结束后会自动销毁

如果希望程序中产生的数据在运行结束后不销毁,就需要将数据存到硬盘中(需要存在文件中)

1.2 常用的文件
txt文件、json文件 、plist文件、数据库文件等   --文本数据
图片文件(png,jpg)、音频文件(MP3、wav)、视频文件...    --二进制文件
'''
#2.文件操作   --操作文件内的内容
'''
文件操作基本步骤
    1)打开文件
    2)操作文件(读、写)
    3)关闭文件(close)

'''
#2.1 打开文件
'''
open(file,mode='r',...,encoding=None)
open(文件路径,打开方式,文本编码方式)   --以指定方式打开指定文件并且返回指定文件对象

说明:
file:  文件路径;可以是文件的绝对路径和相对路径
       绝对路径:文件在计算机中的全路径
       相对路径:用./  -表示当前目录
                 ../  -表示上层目录
                 .../ -表示上上层目录
                 
mode    -   文件打开方式,决定打开文件后的操作权限(能读还是能写 - r/w);
            操作的文件的类型(文本/二进制 - t/b)
            r   -   只读        w   -   只写       a   -   只写
            t   -   文本数据    b   -   二进制数据
            r(单独r相当于rt或者tr) -   打开文件后只能进行读操作,读出来的数据是字符串
            rb/br   -   打开文件后只能进行读操作,读出来的数据是二进制数据(bytes)
            w(wt/tw) -  打开文件后只能进行写操作,写入的数据是字符串;打开的时候先清空源文件
            wb/bw   -   打开文件后只能进行写操作,写入的数据是二进制文件,打开的时候先清空源文件
            a(at/ta) -  打开文件后只能进行写操作,写入的数据是字符串,打开的时候不会清空源文件
            ab/ba   -   打开文件后只能进行写操作,写入的数据是二进制文件,打开的时候不会清空源文件
            
            注意:a、w在打开文件的时候,如果文件不存在,会自动创建文件
                 r在打开文件的时候,如果文件不存在,会报错
                 
encoding    -   文本文件编码方式;只能以t的方式打开文本文件时可以赋值
                一般采用utf-8的方式进行编码,保证统一个文件读和写的编码方式一致
'''
#绝对路径
open(r'D:\python工程\语言基础\day13_文件操作和异常处理\file\test.txt')

#相对路径
open('../file/test.txt')
#2.2操作文件
'''
1)读操作
文件对象.read() -   读指定文件,并返回文件中的内容(支持所有文件)
文件对象.readline() -   读指定文件一行的内容(只支持文本文件)

2)写操作
文件对象.write(内容)  -   将指定内容写入到指定文件中

'''
f = open('../file/test.txt', 'r', encoding='utf-8')
content = f.read()
print(content)
f.close()
f = open('../file/test.txt', 'r', encoding='utf-8')
for x in range(4):
    print(f.readline())

f = open('../file/test.txt', 'w', encoding='utf-8')
f.write('123456')

f = open('../file/test.txt', 'a', encoding='utf-8')
f.write('123456')

数据持久化

1.数据持久化

1.1 需要持久化的数据要保存在文件中
1.2 需要数据的时候,不是在程序中直接给初始值,而是在本地文件中读数据
1.3 如果这个数据的值发生改变,要将最新的数据更新到文件中
练习:在程序中用一个变量来记录当前程序启动的次数

f = open('../file/count.txt', 'r', encoding='utf-8')
content = int(f.read())
content += 1
f.close()

f = open('../file/count.txt', 'w', encoding='utf-8')
f.write(str(content))
print('文件当前执行次数:', content)
f.close()

2.文件域

'''
打开指定文件,在文件作用域结束后会自动关闭文件
with open(文件路径,打开方式,编码方式) as 文件对象:
    文件作用域
    
with open('../file/test.txt', 'r', encoding='utf-8') as f1:
    re = f1.read()
    print(re)
练习:每次运行程序添加一个学生,要求之前添加的学生要一直存在

list1 = ['张三', '李四', '小明']
for x in range(len(list1)):
    with open('../file/a.txt', 'a', encoding='utf-8') as f:
        f.write(list1[x])

    with open('../file/a.txt', 'r', encoding='utf-8') as f:
        re = f.read()
        print(re)
#eval(序列) 将对应序列的字符串转换成对应的序列

str1 = '[1, 2, 3]'
r1 = eval(str1)
print(r1)

json数据

1.什么是json

json是一种数据格式:1.一个json只有一个数据,这个数据必须是json支持的数据类型的数据
json支持的数据类型: 1.数字类型(number) - 所有的数字,支持科学计数法,直接                      写
                   2.字符串  -   文本数据,只能使用双引号引起来,支持转义                                字符
                   3.布尔   -   只有true和false两个值
                   4.空值   -   null
                   5.数组   -   和列表一样,其中元素可以数json支持的任何                                数据
                   6.字典   -   和python中的字典一样,key必须是字符串

2.json转python

'''
json               python
数字              int/float
字符串            字符串:双引号变成单引号 
布尔              布尔:true->True;false ->False
null              None
数组              列表
字典              字典

'''

3.json转python方法

'''
json.loads(字符串)     - 将json格式的字符串转换成python对应的数据
                        注意:要求这个字符串的内容必须是json格式的数据
'''
result = json.loads('100')
print(result)

result = json.loads('"abc"')
print(result)

result = json.loads('[true, null, "hello"]')
print(result)


result = json.loads('{"10": 100, "name": "Tom"}')
print(result)

4.python转json规律

'''
转换规律:
python          json
int/float       数字
字符串          字符串:单引号会变成双引号
布尔            True ->true;False ->false
None            null
列表/元组        数组
字典            字典
'''

5.python转json方法

'''
json.dumps(数据)      - 将python数据转换成json格式的字符串
'''
result = json.dumps(100)
print(result)

result = json.dumps('abc')
print(result)

result = json.dumps([True, None, 'hello'])
print(result)

result = json.dumps((10, 'abc', False))
print(result)

result = json.dumps({10: 100, 'name': 'Tom'})
print(result)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • day12-文件操作和json数据 一、文件操作 1. 数据持久化 计算机内存分为硬盘和运行内存 存储到本地文件中...
    Octane阅读 2,435评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,795评论 1 32
  • 一.文件管理 os库提供了很多和文件管理操作 1.数据本地化和数据持久化 - 通过文件将数据存到硬盘中数据库文...
    程序里的小仙女阅读 3,222评论 0 3
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,120评论 0 10
  • 孩子们的表现 周四上午我们迎来了一年一度的六一文艺汇演,下午又放假,所以再一次爽约没有第一时间看直播课程,...
    孙微sw阅读 3,294评论 0 20