python 入门 笔记 二

官方文档: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】使用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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值