文件操作

    bytes ------> encode(编码) ------> 字符串 
    字符串 ------> decode(解码) ------> bytes     #bytes(要转换成bytes的字符串,一定要指定编码模式encoding = 'utf-8')
    打开文件:
        with open('a.txt','r',encoding='utf-8') as f1,\  # \可以换行避免一行上有太多内容,打开多个文件用逗号隔开。 
            open('b.txt','w',encoding='utf-8',newline = '') as f2: # 读取文件中真正的换行符号
            
    文件读取
        with open("filename") as file_object(文件内容将要存放的变量名):
            text1 =  file_object.read() # 全部读取
            text2 = file_object.readlines() # 逐行读取,text2是一个列表,每一个元素代表一行数据
    文件写入
        with open("filename",'w') as file_object:
        # 文件的各种打开模式
            w     以写方式打开,
            a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
            r+     以读写模式打开
            w+     以读写模式打开 (参见 w )
            a+     以读写模式打开 (参见 a )
            rb     以二进制读模式打开
            wb     以二进制写模式打开 (参见 w )
            ab     以二进制追加模式打开 (参见 a )
            rb+    以二进制读写模式打开 (参见 r+ )
            wb+    以二进制读写模式打开 (参见 w+ )
            ab+    以二进制读写模式打开 (参见 a+ )
        如果你省略了模式实参,Python将以默认的只读模式打开文件。
        # python 只能将字符串写入文件
            file_object.write("要写入的数据")
        # 写入多行需要添加换行符
            file_object.write("I love python\n")
    打开文本文件:
        出现错误:
            UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence
                # 可以使用‘ignore’属性忽略非法字符,errors='ignore'
                # 指明打开方式参数encoding='utf-8',encoding='gbk',encoding='gb18031'
    存储数据:
        json是一个模块,使用前需提前导入
        json.dump(),json.load()
        json.dump()接受两个参数,要存储的数据以及可用于存储数据的文件对象(文件名以.json结尾)
        json.load()将文件中的数据加载到内存中    
    增删目录(文件夹):
        >>> os.path.join('C:\\Users\\12164\\Desktop','test') # 拼接目录
        'C:\\Users\\12164\\Desktop\\test'
        >>> os.mkdir('C:\\Users\\12164\\Desktop\\test') # 创建目录
        >>> os.rmdir('C:\\Users\\12164\\Desktop\\test') # 删除目录
    文件方法:
        seek(0) 光标的移动
            有三种模式 0,1,2:倒着移动光标
        tell() 返回光标在哪  只有read读的是字符,其他方式都是字节(seek,tell)
    循环文件的推荐方式:
        f = open('a.txt','r',encoding = 'utf-8')
        for i in f:   # 一行一行读取,要一行给一行    

 

posted @ 2020-06-13 17:33  pywhy  阅读(125)  评论(0编辑  收藏  举报