• 字符编码与文件的操作


    一、字符编码    

    什么是字符编码
    人类的字符----》翻译-------》数字(数字说的就是计算机能读懂的语言)
    翻译的过程必须遵循一个标准:字符与数字一一对应的关系
    这个标准称之为字符编码表
    需要我们知道的是:

    python3解释器:默认utf-8编码
    python2解释器:默认ascii编码
    编码的过程是把编译文件转换为


    文件头的作用:#coding:utf-8 是告诉python解释器,用我指定的字符编码来拿出文件。 

       我们要保证不乱吗的核心法则就是,文件是以什么标准编码的,就以什么格式读取。

    一、文件处理

    1、打开文件

    打开文件的格式是:

    f=open(r'文件的路径',mode='打开文件的模式',enconding='操作文件的字符编码‘)

    读写

    格式

     

    f=open(r'文件的路径',mode='打开文件的模式',enconding='操作文件的字符编码‘)

     

    data=f.read()

    print(data)

    读写

     

     

    
    

     

    关闭文件

    f.close()     回收操作系统的资源 ,在文件操作完毕后加上。

        with  open  (r'文件的路径',mode='打开文件的模式',enconding='操作文件的字符编码‘)as  f:

               print(f.read())   

    这种模式不用考虑关闭文件。可以同时打开多个文件

    默认的打开文件的编码是:当前操作系统默认的编码,win:gbk,linux:utf-8

    操作文件的模式有三种:r,w,a

       

    一、打开文件
    f=open(r'文件的路径',mode='打开文件的模式',encoding='操作文件的字符编码')
    f=open(r'a.txt',mode='r')

    二、读/写
    data=f.read()
    print(data)

    三、关闭文件
    f.close() #回收操作系统的资源。在每次打开文件后一定要关闭,否则打开的文件会占用操作系统资源。

    四、开关文件的另一种方法,可以不用手工关闭文件。
    with open(r'a.txt',mode='r') as f:
    print('===>')
    print(f.read())

    with open(r'a1.txt',mode='r') as f1,open('a2.txt',mode='r') as f2:
    print('===>')
    print(f1.read())
    print(f2.read())
    五、打开文件的字符编码:
    默认的打开文件的编码是:当前操作系统默认的编码,win:gbk,linux:utf-8,mac:utf-8
    f=open('a.txt',mode='r',encoding='utf-8') # encoding='utf-8'就是指定打开文件的字符编码
    print(f.read())

    六、文件处理的基本形式
    文件默认的打开模式是t模式:文本模式

    操作文件的模式有三种:r,w,a

    1. r:默认的打开模式,只读模式
    注意:当文件不存在时,报错
    f=open('a.txt',mode='r',encoding='utf-8') #mode='rt'
    f.write('123213213123 ') #抛出异常,不能写
    print(f.readable())
    print('=============>1')
    print(f.read())

    f.close()

    f=open('a.txt',mode='r',encoding='utf-8') #mode='rt'
    print(f.readline(),end='') # .readline()命令是表示一行一行的读取
    print(f.readline(),end='')
    print(f.readline(),end='')
    f.close()


    f=open('a.txt',mode='r',encoding='utf-8') #mode='rt'
    print(f.readlines()) # .readlines()命令是将读取的文件内容以换行符为界限存入列表内
    f.close()
    文件循环读取:
    1.
    with open('a.txt',encoding='utf-8') as f:
    for line in f:
    print(line)
    2.
    for line in f.readlines(): #循环文件不要使用该方式,因为在文件过大的情况下f.readlines()建立的列表有可能会撑爆内存
    print(line,end='')

    2. w:只写模式
    注意
    1、当文件存在时,清空
    2、当文件不存在时,创建空文档

    f=open(r'a1.txt',mode='w',encoding='utf-8') #默认是wt
    f.write('第一行 ')
    f.write('第二行 ')

    f.writelines(['111111 ','222222 ','333333 '])
    f.write('aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ')

    f.close()

    注:每一次写入都会清空所有内容

    3. a:只追加写模式
    注意:
    在文件不存在时,创建空文件
    在文件存在时,光标直接跑到文件末尾添加内容

    f=open('access.log',mode='a',encoding='utf-8')
    print(f.writable())
    f.write('aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ')
    f.readlines() #报错

    f.close()
    文件打开b模式:
    1、强调与t模式类似,但是不能单独使用,必须是rb,wb,ab的形式。
    2、b模式下读写都是以bytes为单位的(二进制)所以b模式下无需考虑文件的格式。
    对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作
    (而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
    3、b模式下一定不能指定encoding参数。
    文件的修改:
    修改文件方式一:
    1、先把文件内容全部读入内存
    2、然后在内存中完成修改
    3、再把修改后的结果覆盖写入原文件
    缺点:会在文件内容过大的情况下,占用过多的内存
    .seek() #偏移量的单位是字节

    示例:
    with open('user.txt',mode='r',encoding='utf-8') as f:
    data=f.read()
    data=data.replace('吴佩其','吴佩其[老男孩第二帅的人]')

    with open('user.txt',mode='w',encoding='utf-8') as f:
    f.write(data)


    修改文件方式二:
    1、以读的方式打开原文件,以写的方式打开一个新文件
    示例:
    import os


    with open('user.txt',mode='rt',encoding='utf-8') as read_f,
    open('user.txt.swap',mode='wt',encoding='utf-8') as write_f:

    for line in read_f:
    if '吴佩其' in line:
    line=line.replace('吴佩其','吴佩其[老男汉特别特别的老]')

    write_f.write(line)

    os.remove('user.txt')#(删除文件)
    os.rename('user.txt.swap','user.txt')#os.rename(重新命名文件名)
     
  • 相关阅读:
    flash播放器插件与flash播放器的区别
    FLASH动作脚本详解
    flash代码
    LitJson使用中需要注意的一些问题(转)
    AS3中ASCII码和字符互转函数
    JQuery直接调用asp.net后台WebMethod方法(转)
    C#文件操作
    js延迟执行
    js操作表格、table、
    定时任务、js定时任务
  • 原文地址:https://www.cnblogs.com/yangwei666/p/8625552.html
Copyright © 2020-2023  润新知