zoukankan      html  css  js  c++  java
  • 六、字符编码和文件处理

    一、字符编码

    1、Python解释器执行Python程序的原理

    第一阶段:先启动Python解释器这个软件

    第二阶段:把.py文件的内容读入内存

    第三阶段:解释执行,识别语法

    2、什么是字符编码?

    字符编码就是字符与数字一一对应关系的标准。

    8bit(比特) = 1bytes(字节)

    一个英文字符占用1个bytes,也就是8bit,也叫ASCII码

    GBK:2个字节表示一个中文字符,1个字节表示一个英文字符

    unicode:2个字节表示一个字符(中文、英文等也是2个字节)

    utf-8:unicode的一种转换版本,1个字节表示一个英文字符,3个字节表示一个中文字符

    内存固定为unicode编码,不能修改。我们能控制的只是存到硬盘上的编码。

    3、指定编码

    python3解释器默认用utf-8编码,python2解释器默认用ASCII编码

    乱码的根本解决方法:文件存取用同一种编码标准(如utf-8)

    python中指定编码,在文件头写下:#coding:utf-8

    unicode转成gbk,utf-8叫编码encode

    gbk,utf-8转成unicode叫解码decode

    二、文件处理

    文件是操作系统提供给应用程序操作硬盘的一个虚拟单位,用于应用程序将数据永久保存。

    1、文件操作步骤:打开文件----读/写----关闭文件

    文件打开语法:

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

    python提供了自动打开和关闭文件,语法:

    with open(r'文件的路径',mode='打开文件的模式',encoding='操作文件的字符编码') as 变量名:

    2、文件操作方法:

    读:

    .read()     读出文件所有的内容,光标移到文件末尾

    .readline()     一次读一行,光标移到第二行行首

    .readlines()    读出文件所有的内容,以行为单位,存在列表中

    写:

    .write()     针对文本模式的写,需要自己写换行符

    .writelines()    把列表或元组里面的值取出来,放进文件中

    循环读取文件每一行的方式:

    for line in f:

        print(line, end='')

    3、文件的打开模式

    t,b

    1)、t模式:

    text文本模式,只能读写文本文件。读写文件是以字符串为单位,需要指定字符编码

    2)、b模式:

    读写都是以bytes字节为单位,与t模式类似,不能单独使用,必须是rb、wb、ab,b模式下一定不能指定encoding字符编码

    4、文件的操作模式

    r(read),w(write),a(append)

    r:只读模式,文件不存在则报错;文件存在,光标停在文件开头

    w:只写模式,当文件存在时,清空;当文件不存在时,创建空文档,光标停在文件开头

    a:只追加写模式,当文件不存在时,创建空文档;当文件存在时,光标直接跑到末尾(大多用于记录日志)

    5、修改文件的方式

    方式一、先把文件全部读入内存----然后在内存中完成修改----再把修改后的结果覆盖写入原文件

    缺点:会在内容过大的情况下,占用过多的内存

    方式二、以读的方式打开原文件,以写的方式打开一个新文件----读一行原文件内容,如果该行内容时需要修改的内容,则写入新文件----删掉原文件,将新文件重命名为原文件

    6、拷贝文件

    解释器交互式拷贝命令:python src_file_path dst_file_path

    py文件拷贝文件代码:

    import sys

    i = sys.argv    #这一行的意思是把命令行中解释器后所有的参数都存成列表

    print(i)

    src_file_path = i[1]

    dst_file_path = i[2]

    with open('原文件路径', mode = 'rb') as src_file,

            open('拷贝文件路径', mode = 'wb') as dst_file:

    for line in src_file:

        dst_file_write(line)

  • 相关阅读:
    【excel】=EXACT(A1,B1) 比较两个字符串是否相等
    【oracle】oracle11g安装失败 提示找不到文件,模板General_Purpose.dbc不存在
    【oracle】11g服务器安装详细步骤
    【oracle】ceil函数 返回值 (大于参数的最小整数)
    【oracle】 months_between(date1,date2)
    javaWeb遍历获取session中的值
    tomcat+mysql数据库连接池的操作
    java中值得类型转化
    javaWeb图片验证码代码
    JSP与Servlet之间传值
  • 原文地址:https://www.cnblogs.com/Python1/p/8719167.html
Copyright © 2011-2022 走看看