美文网首页
10-Python笔记整理(文件操作)

10-Python笔记整理(文件操作)

作者: 李小萌mmm | 来源:发表于2018-07-26 20:53 被阅读0次

    文件操作流程:打开文件 - 操作文件(读/写)-->关闭文件

    '''

    文件模式.png

    编码方式 --> 主要针对文本文件的读写(不同的操作系统默认的文本编码方式不同)
    Windows gbk
    unix utf-8

    encoding 参数可以指定我们打开文件所使用的编码方式,比如 utf-8 或者 gbk。请保证使用文件本身的编码方式打开,否则会出现乱码,二进制文件默认生成 bytes 字符串类型,不能指定 encoding 参数

    a.放在工程外面的文件,写绝对路径
    b.将文件放在工程目录下的某个位置,写相对路径
    当你的py文件直接放在工程目录下,想要使用open打开工程中其他文件
    使用./ ,当py文件在工程目录的子目录下面,想要使用open打开工程中的其他文件使用../

    打开文件,返回文件句柄(文件代言人)

    如果文件不存在,以读的方式打开会报错,以写的方式打开会新建一个文件

    1.读文件(获得文件的内容,并且返回)

    read(self, n: int = -1) -> AnyStr
    readline(self, limit: int = -1) -> AnyStr
    readlines(self, hint: int = -1) -> List[AnyStr]

    read() 方法用来直接读取文件对象并返回字符串,最多读取给定数目个字符(注意不是字节)。如果没有给定 n 参数(默认值为 -1)或者 n 值为负,文件将被读取直至末尾。

    readline() 方法读取打开文件的一行(读取下个行结束符之前的所有字节)。然后整行(包括行结束符)作为字符串返回。和 read() 相同,它也有一个可选的 limit 参数,默认为 -1,代表读至行结束符。如果提供了该参数,那么在超过 limit 个字节后会返回不完整的行。

    readlines() 方法并不像其它两个输入方法一样返回一个字符串。它会读取所有(剩余的)行然后把它们作为一个字符串列表返回。它的可选参数hint 代表返回的最大字节大小。如果它大于 0 ,那么返回的所有行应该大约有 hint 字节(可能稍微大于这个数字,因为需要凑齐缓冲区大小)。

    2、写文件

    write(self, s: AnyStr) -> int
    writelines(self, lines: List[AnyStr]) -> None

    write() 内建方法功能与 read() 和 readline() 相反。它把含有文本数据或二进制数据块的字符串写入到文件中去。

    和 readlines() 一样,writelines() 方法是针对列表的操作,它接受一个字符串列表作为参数,将 它 们 写 入 文 件。行 结 束 符 并 不 会 被 自 动 加 入,所 以 如 果 需 要 的 话,你 必 须 在 调 用 writelines() 前给每行结尾加上行结束符。

    注意这里并没有 "writeline()" 方法,因为它等价于使用以行结束符结尾的单行字符串调用 write() 方法。


    json文件

    最外层只能是一个字典,一个数组,一个字符串
    支持的数据类型:字符串("abc'),数字(100,21,35),布尔值(true/false),数组([1,23,'a]),字典({key:value})
    null (None)

    json格式:内容的最外层
    1.内容是字符串
    2.最外层是字典,字典里面就必须是键值对
    3.最外层是数组(列表),数组里面的内容必须是数组数据

    1.json文件的读操作

     with open('./test.json','r',encoding='utf-8') as f:
           content =f.load(f)
    # 直接使用read()读的话,获得的只是字符串数据
    
    # load(文件对象):获得指定json文件的内容
    # 返回值的类型是json文件最外层对应的数据类型
    

    json文件类型对应的python文件类型
    dict ---> dict
    array ---> list
    string ---> str
    number ---> int/float
    true/flase ---> True /False
    numm ---> None
    content = json.load(f)

    2.json文件的写操作

    with open('../new.json','w',encoding='utf-8') as f:
            #写数据
            #dump(写的内容,文件对象)
        w_content = 'POI'
        json.dump(w_content,f)
    

    练习:保存一个字典到本地,下次打开的时候可以继续添加

    name = input('名字:')
    tel = input('电话:')
    student ={'name':name,'tel':tel}
    try:
        with open('../data1.json','r',encoding='utf-8') as f:
            all_students = json.load(f)
    except FileNotFoundError:
        all_students =[]
    all_students.append(student)
    with open('../data1.json','w',encoding='utf-8') as f:
        json.dump(all_students,f)
    

    3.json模块的其他操作

    loads(字符串,编码方式 ) -->
    json.loads()函数是将json格式数据转换为字典或者列表(可以这么理解,loads函数是将字符串转化为字典或者列表)

    
    content = json.loads('["a",{"a":1}]',encoding='utf-8')
    print(type(content))
    
    <class 'list'>
    
    
    

    '''
    json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
    '''

    import json
    print(type(json.dumps(['aaa',1,True])))
    
    
    <class 'str'>
    
    

    相关文章

      网友评论

          本文标题:10-Python笔记整理(文件操作)

          本文链接:https://www.haomeiwen.com/subject/tslimftx.html