Python基础学习013——文件操作

import json

# 普通文件的操作
# 根据文件中的二进制内容能否转换为文字,可以将文件分成两种:文本文件,二进制文件
# (能不能使用记事本打开,能打开就能转换为文本文件)文本txt,md,py,html,css,js,json二进制exe.jpg,png,mp3,mp4
# 文件操作步骤:1.打开文件.2.读写文件3.关闭文件

# 打开文件:open(file, mode='r', encoding=None),
# file是要打开的文件,类型字符串,路径可以是相对路径,也可以绝对路径
# mode:缺省参数,表示打开文件的方式,默认是只读.(w只写,a追加即append)
# encoding:编码方式,文字和二进制如何转换,gbk(将一个汉字转换为2个字节),utf-8(将一个汉字转换为3个字节,常用)
# 返回值:返回文件对象后,后续对文件的操作都需要这个对象

# 读写文件:文件对象.write()返回写入文件的字符数/文件对象.read(n),n表示读取多少个字符,一般不写,默认读取全部.返回读取的内容,字符串

# 关闭文件:文件对象.close()将文件占用的资源清理,同时保存的文件.文件关闭后文件对象销毁
# -------------------------------------------------------------------------------------
f = open("a.txt", 'w', encoding='utf-8')
f.write('hello World!好')  # 文件不存在则创建文件,文件存在则覆盖原文件内容写入
f.close()

f1 = open('a.txt', 'a', encoding='utf-8')
f1.write("\ngood morning")  # 默认不换行直接append,不存在也会直接创建
f1.close()

f2 = open('a.txt', 'r', encoding='utf-8')  # 如果文件不存在则报错
print(f2.read())
f2.close()
# ---------------------------------------------------------------------------
# 使用with open打开文件:不用书写关闭代码,自动关闭

with open("a.txt", 'w', encoding='utf-8') as f4:
    f4.write('666\n777')  # 出缩进会自动关闭文件
# ----------------------------------------------------------------------------
# 按行读取内容
with open("a.txt", encoding='utf-8') as f5:
    buf = f5.readline()  # 文件指针指向第一行
    print(buf)
    print(f5.readline())  # 文件指针指向下一行

with open("a.txt", encoding='utf-8') as f6:
    for i in f6:  # 按行读取,直到文件末尾
        print(i)

with open("a.txt", encoding='utf-8') as f7:
    while True:
        buf = f7.readline()
        if buf:
            print(buf)
        else:
            break
# json文件的操作
# Json也是文本文件,也可以使用read,write,只是不方便.读取的是字符串,处理字符串不方便
# 常用在测试时,将测试文件定义为json文件格式,使用代码进行读取
# json:独立于语言,不是某个语言特有,轻量级,和其他格式相比占用较少,后端给前端的数据
# json语法:后缀.json.主要数据类型是对象({}类似Python中的字典)和数组([]类似Python中的列表)
# # 一个json文件是一个对象或数组,即文件最外围要么是{},要么是[],有且只能有一个
# json中的对象类似字典,但是最后一个数据后不能有逗号,字典中有逗号是不报错的
# json中的字符串必须是双引号
# 数据类型:数字类型int,float,字符串str,布尔类型true,false,空null
# 读取json:1.导包import json2.读打开文件3.读文件json.load(文件对象),返回字典或列表
with open('info.json', 'r', encoding='utf-8') as jf:
    buf = json.load(jf)
    print(buf[0].get("name"))
    print(buf[0].get("address").get("city"))
# json的写入:也可以使用write
with open('info.json', 'w', encoding='utf-8') as jf1:
    info = {
        "name": "小绿",
        "age": 17,
        "sex": "女",
        "like": [
            "听歌",
            "学习",
            "购物"
        ],
        "address": {
            "country": "中国",
            "city": "北京"
        }
    }
    # info为python中的数据,jf1为文件对象,ensure_ascii是否已asc码形式显示,indent缩进几个空格
    json.dump(info, jf1, ensure_ascii=False, indent=4)
# 函数中有一个*参数,*后边的参数只能使用关键字方式传参

你可能感兴趣的:(Python,python)