欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 入门 笔记 二

程序员文章站 2022-04-11 15:28:55
...

官方文档:https://docs.python.org/3.5/library/logging.html

python 3菜鸟教程

python2 与 python3的区别 (菜鸟教程)

 

基于python的互联网软件测试开发(自动化测试)-全集合

robotframwork官网上说python2与python3的区别

Python 2和Python 3大多是相同的语言,但它们彼此不完全兼容。主要的区别在于,在Python 3中,所有字符串都是Unicode,而在Python 2中,字符串默认是字节,但是还有其他几个向后不兼容的更改。最后一个Python 2版本是2010年发布的Python 2.7,将在2020年之前得到支持。

python2,python3中文编码对比

Python2中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。(python3没有报错啊)

解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了

python2 代码中包含中文,就需要在头部指定编码。

注意:Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。(但是utf-8的文件又分有 BOM的,无BOM的,python3的)

注意:如果你使用编辑器,同时需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息:

SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0:

python 入门 笔记 二

 

【Python】使用codecs模块进行文件操作及消除文件中的BOM

UTF-8文件的Unicode签名BOM(Byte Order Mark)问题记录(EF BB BF)

个人建议:
Python3直接用open。
Python2.x下用codecs.open,特别是有中文的情况,然后也可以避免踩到2.6下面io.open的坑。
如果希望代码同时兼容Python2和Python3,那么推荐用codecs.open。

编码不统一的报错如下

>>> fr = open('test.txt','a')
>>> line2 = u'我爱祖国'
>>> fr.write(line2)

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    fr.write(line2)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)

UTF-8文件中的BOM检测及消除

然后继续我们今天的另外一个主题,怎么样消除UTF-8文件中的BOM(Byte Order Mark),十六进制编码(EF BB BF),博主的方法有些取巧但是也比较高效,主要用到了codecs的函数BOM_UTF8,如果发现BOM_UTF8,则直接改写文件内容。

import codecs

with open(config_path) as source_file:
    data = source_file.read()
    
   # remove BOM
   if data[:3] == codecs.BOM_UTF8:  # 判断是否为带BOM文件
        data = data[3:]
        with codecs.open(config_path) as dest_file:
            dest_file.write(data)

ConfigParser读ini配置文件 ,写ini配置文件

section, option, value是什么意思?

基本的读取操作:

  • -read(filename)               直接读取文件内容
  • -sections()                      得到所有的section,并以列表的形式返回
  • -options(section)            得到该section的所有option
  • -items(section)                得到该section的所有键值对
  • -get(section,option)        得到section中option的值,返回为string类型
  • -getint(section,option)    得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。

基本的写入操作:

  • -write(fp)  将config对象写入至某个 .init 格式的文件  Write an .ini-format representation of the configuration state.
  • -add_section(section)   添加一个新的section
  • -set( section, option, value)   对section中的option进行设置,需要调用write将内容写入配置文件
  • -remove_section(section)  删除某个 section
  • -remove_option(section, option) 
#注意python2是:import ConfigParser,python3是: import configparser 
import ConfigParser                  
import sys

config=ConfigParser.ConfigParser()   # 实例化configParser对象
config.add_section("book")           #添加1个section
config.set("book","title","这是标题") #设置section的option的value值
config.set("book","author","大头爸爸")
config.add_section("size")            #添加1个section
config.set("size","size",1024)       #设置section的option的value值
config.write(sys.stdout)

执行结果
[book]
title = 这是标题
author = 大头爸爸

[size]
size = 1024